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 相关文章推荐
PHP5常用函数列表(分享)
Jun 07 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 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模板类代码
2008/09/07 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vuejs简单验证码功能完整示例
2019/01/08 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Reformation官网:美国女装品牌
2018/09/14 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
大二学生自我检讨书
2014/10/23 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
新郎答谢词
2015/01/04 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
水知道答案观后感
2015/06/08 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书