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中利用XML技术构造远程服务(上)
Oct 09 PHP
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
php MYSQL 数据备份类
Jun 19 PHP
PHP教程 预定义变量
Oct 23 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
基于PHP静态类的原罪详解
May 06 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
基于laravel where的高级使用方法
Oct 10 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
优化使用mysql存储session的php代码
2008/01/10 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP Socket 编程
2010/04/09 PHP
dedecms中使用php语句指南
2014/11/13 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
python中的decorator的作用详解
2018/07/26 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
利用python开发app实战的方法
2019/07/09 Python
什么是Python变量作用域
2020/06/03 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
Python实现壁纸下载与轮换
2020/10/19 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
小学门卫岗位职责
2013/12/17 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
感谢信范文大全
2015/01/23 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python