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 相关文章推荐
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
php 问卷调查结果统计
Oct 08 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 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安全技术之 实现php基本安全
2010/09/04 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
Gird事件机制初级读本
2007/03/10 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
幼儿园教师辞职信
2014/01/18 职场文书
小学班主任寄语大全
2014/04/04 职场文书
质量管理标语
2014/06/12 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
机动车交通事故协议书
2015/01/29 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js