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&amp;&amp;mysql)二
Oct 09 PHP
php fckeditor 调用的函数
Jun 21 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
php银联网页支付实现方法
Mar 04 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php两点地理坐标距离的计算方法
Dec 29 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python搭建微信公众平台
2016/02/09 Python
python中list列表的高级函数
2016/05/17 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
python如何实现DES加密
2020/09/21 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
C#公司笔试题
2014/03/28 面试题
绘画专业自荐信范文
2014/02/23 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
政风行风评议整改方案
2014/09/15 职场文书
现实表现材料范文
2014/12/23 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
高中家长意见怎么写
2015/06/03 职场文书
2016七夕情人节感言
2015/12/09 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers