读书频道 > 网站 > 网页设计 > PHP编程实战
1.3.1 __get和__set方法
14-10-31    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > PHP编程实战

本书主要内容包括:PHP 5 3 面向对象编程、PHP 的一些新特性、如何编写基于SQL 和NoSQL 的数据库交互程序、如何使用流行的PHP 相关工具、如何编写社交媒体应用程序,并介绍了NoSQL 数据存储以及为云生态编立即去当当网订购
 
当一个值赋值给一个不存在的成员时,__set方法被调用。当尝试去访问一个不存在的成员时,__get方法被调用。如代码清单1-4所示。
 
代码清单1-4 有关_set和_get方法的例子
#  __get和__set功能示例 
# 设置和读取"speed_limit"这一不存在的属性
<?php 
class test1 { 
    protected $members = array(); 
    public function __get($arg) { 
        if (array_key_exists($arg, $this->members)) { 
            return ($this->members[$arg]); 
        } else { return ("No such luck!\n"); } 
    } 
    public function __set($key, $val) { 
        $this->members[$key] = $val; 
    } 
    public function __isset($arg) { 
        return (isset($this->members[$arg])); 
    } 
$x = new test1(); 
print $x->speed_limit; 
$x->speed_limit = "65 MPH\n"; 
if (isset($x->speed_limit)) { 
    printf("Speed limit is set to %s\n", $x->speed_limit);
$x->speed_limit = NULL; 
if (empty($x->speed_limit)) { 
    print "The method __isset() was called.\n"; 
} else { 
    print "The __isset() method wasn't called.\n"; 
?> 
 
当执行时,该脚本执行结果如下所示。
No such luck!  
Speed limit is set to 65 MPH 
The method __isset() was called.
 
不定义类成员speed_limit,而是引用它,这样不会产生错误。因为当我们引用不存在的成员时,__get方法被执行;当给一个不存在的成员赋值时,__set被执行。在一个关联数组里定义所有的成员(或属性),并指向它们,好像把它们作为单独的类属性定义,这是一种常见的做法。这种做法使类更易于扩展。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站