function MY_wrapper() {}
class MY_DB { }
define('MY_CONN_STR', '');
MY_wrapper();
new MY_DB();
MY_CONN_STR;
使用名称空间之后,代码看上去更加clean。
PLAIN TEXT
CODE:
namespace MY;
function wrapper() {}
class DB { }
const CONN_STR = '';
use MY AS MY;
wrapper();
new DB();
CONN_STR;
一个文件中定义了多个namespace
如果一个文件中定义了多个namespace,应该怎样处理?
PLAIN TEXT
CODE:
namespace LIB;
class MySQL {}
class SQLite {}
$b = new SQLite();
namespace LIB_EXTRA;
class MScrypt {}
$a = new MScrypt();
var_dump(
get_class($a),
get_class($b)
);
以上代码输出为:
class A {
public static function whoami() {
echo __CLASS__;
}
public static function identity() {
self::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // A <-- PHP <5.3
下面代码中使用了static::whoami()来调用静态方法。php 5.3之后,由于__CLASS__是在执行期被处理,那么这个例子中能顺利抓到class B。
PLAIN TEXT
CODE:
class A {
public static function whoami() {
echo __CLASS__;
}
public static function identity() {
static::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // B <-->= PHP 5.3
mysqlnd
见mysqlnd成为php 5.3中的默认mysql驱动