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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
PHP生成静态页面详解
Nov 19 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
php项目打包方法
Feb 18 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
php构造函数与析构函数
Apr 23 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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
星际争霸任务指南——神族
2020/03/04 星际争霸
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
jquery 新浪网易的评论块制作
2010/07/01 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
Python文件读写常见用法总结
2019/02/22 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
20年同学聚会感言
2014/02/03 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
文明班级建设方案
2014/05/15 职场文书
2016年五一促销广告语
2016/01/28 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python