`

PHP5之_set和_get函数

阅读更多

先来看一个例子:

class UserInfo{
   var $UserName = ’’;
   var $PassWord = ’’;
   var $Birthday = ’’;
}

这个例子我想很多人在PHP4种也有用到,接下来给对象属性进行付值:

$oUserInfo = new UserInfo;
$oUserInfo->UserName = '木目';
$oUserInfo->PassWord = '123456';
$oUserInfo->Birthday = '1978-08-16';
$oUserInfo->age       = 27;

echo "用户名:".$oUserInfo->UserName."<br/>\n";
echo "密   码:".$oUserInfo->PassWord."<br/>\n";
echo "生   日:".$oUserInfo->Birthday."<br/>\n";

上面的代码在PHP4、PHP5种运行起来并不会发生任何问题。然而实际使用中我并不希望给对象没有定义的属性进行付之操作,我希望的是编程的人员能够严格按照我所设计的结构进行,这个时候在PHP4中就无能为力了。如果你正在试用PHP5,那我告诉你一个好消息,这个问题在PHP5中的有了较好的解决,虽然并不完美。那就是__set和__get我们来利用PHP5的一些特性改写一下上面的代码看看会发生什么问题:

class UserInfo1{
   var $UserName = ’’;
   var $PassWord = ’’;
   var $Birthday = ’’;
   function __set($property,$value){
     echo "对不起,你要设置的属性({$property}=>{$value})不存在<br>";
   }
   function __get($property){
     echo "对不起,你要获取的属性({$property})不存在<br>";
   }
}
$oUserInfo1 = new UserInfo1;
$oUserInfo1->UserName = '木目子';
$oUserInfo1->PassWord = '123456';
$oUserInfo1->Birthday = '1978-08-16';
$oUserInfo1->age       = 27;

echo "用户名:".$oUserInfo1->UserName."<br/>\n";
echo "密   码:".$oUserInfo1->PassWord."<br/>\n";
echo "生   日:".$oUserInfo1->Birthday."<br/>\n";

运行一下看看会发生什么,仔细想想就不难发现__set和__get的作用了。但让__set和__get的用途远远不止这些,这只是一个很简单的例子。

class UserInfo2{
   private $aData = array();
}
$oUserInfo2 = new UserInfo2;
$oUserInfo2->aData['UserName'] = '木目子';
$oUserInfo2->aData['PassWord'] = '123456';
$oUserInfo2->aData['Birthdat'] = '1978-08-16';

echo "用户名:".$oUserInfo2->aData['UserName'] ."<br/>\n";
echo "密   码:".$oUserInfo2->aData['PassWord'] ."<br/>\n";
echo "生   日:".$oUserInfo2->aData['Birthday'] ."<br/>\n";

显然,这段代码会出错的,因为aData是UserInfo的私有属性,不能直接在外部使用,那现在问题是必须要给aData进行付值,这个时候__set和__get就排上用场了:

class UserInfo3{
   //private $aData = array();
   private $aData = array();
   function __set($property,$value){
     $this->aData[$property] = $value;
   }
   function __get($property){
     return $this->aData[$property];
   }
}
$oUserInfo3 = new UserInfo3;
$oUserInfo3->aData['UserName'] = '木目子';
$oUserInfo3->aData['PassWord'] = '123456';
$oUserInfo3->aData['Birthdat'] = '1978-08-16';

echo "用户名:".$oUserInfo3->aData['UserName'] ."<br/>\n";
echo "密   码:".$oUserInfo3->aData['PassWord'] ."<br/>\n";
echo "生   日:".$oUserInfo3->aData['Birthday'] ."<br/>\n";

再来运行一下看看,OK一些搞定。

 

分享到:
评论

相关推荐

    PHP中ini_set和ini_get函数的用法小结

    ini_get函数的作用与ini_set相反,它用于获取PHP配置选项的当前值。在实际开发中,我们可能需要确认某个配置选项的值,以确保我们的脚本按预期工作,这时就可以使用ini_get函数。它的语法非常简单,只需要传递一个...

    PHP中ini_set与ini_get用法实例

    本文实例讲述了PHP中ini_set与ini_get的用法。分享给大家供大家参考。具体如下: PHP ini_set函数。 PHP ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效。不是所有的选项都能被该...

    php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法

    在PHP面向对象编程中,`__get()`, `__set()`, `__isset()`, 和 `__unset()` 是四个非常重要的魔术方法,它们允许开发者在访问不存在或者不可见的类属性时提供一种处理机制。这些方法是PHP5引入的特性,主要用于增强...

    PHP中set_include_path()函数相关用法分析_.docx

    总之,`set_include_path()`函数是PHP中一个非常实用的工具,它允许程序员自定义文件包含的搜索路径,提高代码的可读性和安全性。通过合理使用,可以更好地组织项目结构,同时减少因文件路径更改而进行的大量代码...

    php set_magic_quotes_runtime() 函数过时解决方法

    在PHP的历史版本中,这个函数用于开启或关闭魔术引号的运行时行为,这是一项安全特性,用于自动对GET、POST和COOKIE数据中的特殊字符进行转义处理,以防止SQL注入等安全问题。但随着PHP版本的更新和改进,`magic_...

    浅谈PHP拦截器之__set()与__get()的理解与使用方法

    但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。 我们为每个属性做了设置和...

    PHP最常用的四个ini函数

    在PHP编程中,ini函数主要用于处理和操作PHP配置文件(php.ini)的设置。以下是PHP最常用的四个ini函数的详细说明: 1. **ini_get()**:此函数用于获取php.ini配置文件中指定选项的当前值。如果选项值为布尔类型,...

    PHP file_get_contents 函数超时的几种解决方法

    首先,我们要明确一点:`set_time_limit` 函数仅用于设置整个PHP脚本的执行时间限制,并不能直接影响`file_get_contents`函数的超时设置。如果你发现`file_get_contents`在获取远程URL时超时,需要通过创建自定义的...

    php常见的魔术方法详解

    php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。  PHP中的魔术方法有 :__construct, __destruct , __call, __callStatic,__get, __set, ...

    PHP5函数小全(分享)

    这篇文章详细总结了PHP5中常用的一些函数,涉及到延迟执行、字符串和二进制处理、文件处理、网络连接、ZIP文件操作以及XML处理等多个方面。以下是对这些函数知识点的详细解释: 1. **延迟代码执行函数**: - `...

    php 魔术函数和常量一览表

    在PHP编程语言中,魔术函数和常量是其高级特性之一,它们能够在特定条件下自动触发,无需显式调用,从而极大地增强了代码的灵活性和功能。以下是对标题、描述及部分给定内容中提及的PHP魔术函数和常量的详细解析。 ...

    php set_include_path函数设置 include_path 配置选项

    `set_include_path` 是 PHP 中的一个内置函数,用于在运行时动态修改 PHP 的 `include_path` 配置。`include_path` 是一个特殊路径列表,PHP 使用它来查找要包含的文件(如类库、头文件等)。当使用 `require`、`...

    php中文手册以及常用函数.zip_php手册_常用函数

    5. `date()`: PHP日期和时间处理的重要函数,可以根据特定格式输出当前或者任意时间的日期和时间,对于构建动态网页,尤其是涉及到时间展示和处理的应用十分关键。 6. `mysql_connect()`: 这是PHP与MySQL数据库进行...

    PHP 文件操作函数

    `error_reporting()`和`ini_set('display_errors')`控制错误报告。为了记录错误,可以使用`error_log()`将错误信息写入日志。 8. **安全考虑** 在进行文件操作时,必须注意避免路径注入和跨站脚本攻击。使用`...

    PHP中set_include_path()函数相关用法分析

    本文实例讲述了PHP中set_include_path()函数相关用法。分享给大家供大家参考,具体如下: 先看如下代码: &lt;?php /** 定义根目录 */ define('__TYPECHO_ROOT_DIR__', dirname(__FILE__)); /** 定义插件目录(相对...

    php函数大全.rar

    3. PHP_操作与信息函数.pdf:这部分涵盖了获取和操作PHP系统信息的函数,如`phpinfo()`用于显示PHP配置信息,`ini_get()`和`ini_set()`用于获取或设置PHP配置选项,`getenv()`获取环境变量,以及`phpversion()`获取...

    php5.rar_PHP 教程_manuel php5 .chm_php5_php5 chm

    构造函数和析构函数用于对象的生命周期管理,而魔术方法如`__get`、`__set`则提供了对未定义属性的动态访问。 **4. 面向对象的特性** PHP5引入了接口(Interface)和抽象类(Abstract Class),实现了多态性。类...

    set_include_path和get_include_path使用及注意事项

    在PHP编程中,`set_include_path` 和 `get_include_path` 是两个非常重要的函数,它们与文件包含(如 `include` 和 `require`)密切相关。理解并熟练运用这两个函数可以帮助开发者更好地组织和管理项目中的文件结构...

    PHP 魔术变量和魔术函数详解_.docx

    除了魔术变量,PHP还有魔术函数,如`__construct()`用于对象的构造,`__destruct()`用于对象销毁,`__get()`和`__set()`处理未定义的属性访问,`__call()`和`__callStatic()`处理未定义的方法调用等。这些函数可以...

Global site tag (gtag.js) - Google Analytics