• 技术文章 >后端开发 >php教程

    PHP面向对象程序设计类的定义与用法详解

    墨辰丷墨辰丷2018-05-29 10:21:05原创548
    这篇文章主要介绍了PHP面向对象程序设计类的定义与用法,结合实例形式分析了php类的定义、实例化、__set()及__get()具体使用技巧,需要的朋友可以参考下

    具体如下:

    <?php
    class Person {
      private $name;
      private $sex;
      private $age;
      function __construct($name = "", $sex = "男", $age = 22) {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
      }
      // 直接为私有属性赋值时自动调用,可以屏蔽一些非法赋值
      // 之前有版本可以设置方法为private function __set()
      // The magic method __set() must have public visibility
      // 因为5.35对魔术方法限制的严格了
      public function __set($propertyName, $propertyValue) {
        if ($propertyName == "sex") {
          if (! ($propertyValue == "男" || $propertyValue == "女")) {
            return;
          }
          if ($propertyValue > 150 || $propertyValue < 0) {
            return;
          }
        }
        // 根据传入的成员属性名,赋上相应的值
        $this->$propertyName = $propertyValue;
      }
      // 用来获取私有属性
      public function __get($propertyName) {
        if (isset ( $this->$propertyName )) {
          return ($this->$propertyName);
        } else {
          return (NULL);
        }
      }
      public function __isset($propertyName) {
        if ($propertyName == "name") {
          return false; // 返回假,不允许在对象外部测定这个属性
        }
        return isset ( $this->$propertyName );
      }
      public function __unset($propertyName) {
        if($propertyName=="name") {
          return; //不允许删除name属性
        }
        unset($this->$propertyName);
      }
      function say() {
        echo $this->name . "在说话<br/>";
      }
      function run() {
        echo "在走路·<br/>";
      }
      function __destruct() {
        echo "goodbye" . $this->name . "<br/>";
      }
    }
    $person1 = new Person ();
    $person2 = new Person ( "2" );
    $person3 = new Person ( "3" );
    // 自动调用了__set()
    $person1->name = "张三";
    echo $person1->name;
    echo "<br/>";
    echo $person1->say ();
    // 自动调用了__get()
    echo $person1->age;
    echo "<br/>";
    var_dump ( isset ( $person1->name ) );
    echo "<br/>";
    unset($person1->name);
    echo "unset------------>".$person1->name;//name 没有被unset()
    echo "<br/>";
    $person2 = null;
    ?>

    结果:

    张三
    张三在说话
    22
    bool(false)
    unset------------>张三
    goodbye2
    goodbye3
    goodbye张三

    以上就是本文的全部内容,希望对大家的学习有所帮助。


    相关推荐:

    PHP面向对象程序设计类的定义与用法简单示例

    php定义空对象的方法

    PHP定义数组的方法

    以上就是PHP面向对象程序设计类的定义与用法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:设计类 php 定义
    上一篇:PHP MYSQL简易交互式站点开发详解 下一篇:PHP面向对象程序设计OOP继承用法详解
    大前端线上培训班

    相关文章推荐

    • 带你分清类中的构造函数与析构函数• PHP中的命名空间定义与使用(实例详解)• PHP中clone关键字和__clone()方法的使用(实例详解)• 怎样去搞定PHP类的继承?(总结分享)• 五分钟带你了解PHP中的魔术方法(实例详解)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网