3.2.5 PHP类常量的局限
如果类常量能完全听命于我们(do our bidding)还是相当不错的,但是其不驯之处还是早早地暴露出来了。类常量的值只能在定义时设置,并且不能在类的方法中定义。常量只能被初设成普通值(plain value)不能被设置成对象。甚至在定义类常量时,不能使用字符连接。
正如前面提到的,不能改变常量的值,即使你在测试的时候希望如此也不行。那么我们该怎么办呢?
使用类变量来替代类常量
最简单且显而易见的方法是用类变量来代替类常量,比较典型的是public类型的。因为变量可以在定义之后被改变,我们可以在method中给它赋值,就可以把对象赋给变量,也能在赋值前先完成若干我们需要的处理。不过实现起来需要一些小技巧。如果在构造函数中来实现,那么在有对象之前,这个变量是不能被使用的(因为它还没有值),当然我们可以在类声明之后,马上弄出一个对象来补救。还有一个办法,就是定义一个类方法来初始化类变量。假设我们用到二个mysql数据库rbac和cms,
class Connections {
public static $RBAC;
public static $CMS;
public static function init() { //译者注原文此处没有static
self::$RBAC =
new mysqli('localhost','user','password','rbac'); //译者注:此处变量里存放了对象
self::$CMS =
new mysqli('localhost','user','password','cms');
}
}
Connections::init();
尽管这段代码看上去比较丑陋且笨拙,但是它的确能用。而且我们还能进一步把变量设为私有的,并加上静态访问的方法。
public static function getRbac() { return self::$RBAC; }
public static function getCms() { return self::$CMS; }
用方法代替常量
一个只读的类方法也许是常量的很好的一个替代品。而且它们可以被写得几乎一模一样,就象用Person::DBTABLE()去替换Person::DBTABLE:
public static function D
相关文档:
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
......
PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择。
PDO->beginTransa ......
AddSlashes: 字符串加入斜线。
bin2hex: 二进位转成十六进位。
Chop: 去除连续空白。
Chr: 返回序数值的字符。
chunk_split: 将字符串分成小段。
convert_cyr_string: 转换古斯拉夫字符串成其它字符串。
crypt: 将字符串用 DES 编码加密。
echo: 输出字符串。
explode: 切开字符串。
flush: 清出输出缓 ......
运行环境:windows xp sp2
IIS v5.1
PHP 5.3.1-Win32-VC9-x86
Mysql 5.0
安装步骤:
安装IIS5.1
在 ......