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 相关文章推荐
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
用PHP产生动态的影像图
2006/10/09 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
python3判断url链接是否为404的方法
2018/08/10 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
解决yum对python依赖版本问题
2019/07/05 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
经贸日语毕业生自荐信
2013/11/03 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
在校学生职业规划范文
2014/01/08 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
公司总经理岗位职责
2014/03/15 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS