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


Posted in PHP onDecember 27, 2016

本文实例讲述了PHP面向对象程序设计类的定义与用法。分享给大家供大家参考,具体如下:

<?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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
解析php中memcache的应用
Jun 18 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 #PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 #PHP
PHP串行化与反串行化实例分析
Dec 27 #PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 #PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 #PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 #PHP
PHP简单实现冒泡排序的方法
Dec 26 #PHP
You might like
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
JS变量及其作用域
2017/03/29 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
实例Python处理XML文件的方法
2015/08/31 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
Python 可视化神器Plotly详解
2020/12/26 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
上学迟到的检讨书
2014/01/11 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
邀请函范文
2015/02/02 职场文书
高中生物教学反思
2016/02/20 职场文书