PHP码农进化史2
1.是否可以在类的外部访问一个属性是由访问修饰符来确定的。
2.从类的外部直接访问类的属性是糟糕的想法。面向对象的一个方法就是鼓励封装。在PHP中,我们一般通过__get()与__set()函数来实现对
属性的访问.如果不直接访问一个类的属性而是编写访问函数,那么可以通过一段代码执行所有访问。最初的访问函数如下所示:
class classname {
public $attribute;
function __get($name) {
return $this->$name;
}
function __set($name, $value){
$this->$name = $value;
}
}
3.此访问器函数的原理就是这样:只使用一段代码来访问特定属性。由于只有一个入口,就可以对要保存的数据进行检查,可以确保保存的数
据是有意义的数据。例如:
function _set ($name, $value) {
if( ($name == "attribute") && ($value >= 0) && ($value <= 100) ) {
$this->attribute = $value;
}
}
4.通过单一的访问入口,可以方便地改变潜在的程序实现。如果由于某种原因,需要改变属性$attribute的保存方式,访问器函数允许我们只
要修改一处代码,就可以完成此工作。
5.__get(),__set(),__isset(),__unset().
一般来说,总是把类的属性定义为private,这样更复合现实逻辑。
__get(),__set():用来获取和赋值其属性.他们不是默认存在的,而是我们手工添加进去的。
__isset(),__unset():来检查属性和删除属性。
6.__get()与__set(),__isset()与__unset()的一般添加方法。
//__get()方法用来获取私有属性.
private function __get($property_name) {
if (isset($this -> property_name)) {
return($this -> $property_name);
} else {
return(NULL);
}
}
//__set()方法设置私有属性
private function __set($property_name,$value) {
$this -> $property_name = $value;
}
//__isset()方法可以设为私有
private function __isset($property_name) {
相关文档:
PHP作为一种服务器端的脚本语言,象编写简单,或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍。
那么,是否可以在PHP脚本中调用外部命令呢?如果能,如何去做呢?有些什么方面的顾虑呢?相 ......
PHP中居然没有读取BMP格式图片的函数,还好高人已经写好一个,我没看代码,反正能正常使用.
imagecreatefrombmp -- 从 BMP 文件或 URL 新建一图像
function imagecreatefrombmp($file)
{
global $CurrentBit, $echoMode;
$f=fopen($file,"r");
$Header=fread($f,2);
if($Header=="BM" ......
PHP解疑(2)
1. magic_quotes_xxx的作用
magic_quotes_gpc为on时,php在注册变量时会调用addslashes()函数处理[既转义单引号、双引号、反斜线和nullbyte],但php.ini中还有另外一个选项影响着magic_quotes_gpc和addslashes()函数:当php.ini设置magic_quotes_sybase为on时会覆盖 ......
编写关于 PHP 的系列文章让我更加深刻地了解了 PHP 开发人员的世界。我和许多 PHP 程序员交谈过,最令我惊奇的是只有很少的人使用 IDE。大多数程序员使用文本编辑器,比如 Microsoft® Windows® 上的记事本、Emacs 或者 Vim。
我提到的这些文本编辑器(以及我没提到)都是很不错的 —— 我不想讨论 ......
Zend-PHP编码规范
1.对于只包含PHP的文件,"?>"是不允许存在的。注释:防止末尾被意外的注入空白并显示输出。
2.缩进应使用四个空格的缩进,而不使用制表符TAB。
3.一行80个字符是比较合适的,最多为120字符。
4.行的结束符只能是标准的UNIX文本文件的换行,换行符在文件中表示为10,或16进制的 0x0A。
不要使用win ......