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 相关文章推荐
改进的IP计数器
Oct 09 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
PHP页面中文乱码分析
Oct 29 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
laravel5.6实现数值转换
Oct 23 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
PHP5 安装方法
2006/10/09 PHP
PHP面向对象分析设计的经验原则
2008/09/20 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
Js获取事件对象代码
2010/08/05 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
python tkinter窗口最大化的实现
2019/07/15 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
化学相关工作求职信
2013/10/02 职场文书
珍惜水资源建议书
2014/03/12 职场文书
初中班主任寄语
2014/04/04 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书