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脚本的10个技巧(2)
Oct 09 PHP
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
php调用新浪短链接API的方法
Nov 08 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 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中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
浅谈php扩展imagick
2014/06/02 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
深入理解Python中各种方法的运作原理
2015/06/15 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python线性回归实战分析
2018/02/01 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
酒后驾驶检讨书
2014/01/27 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
写求职信有什么意义
2014/02/17 职场文书
2014年端午节活动方案
2014/03/11 职场文书
委托公证书范本
2014/04/03 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
Oracle笔记
2021/04/05 Oracle
python实现简单的井字棋
2021/05/26 Python
create-react-app开发常用配置教程
2022/06/25 Javascript