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服务器实现多session并发运行
Oct 09 PHP
php采集时被封ip的解决方法
Aug 29 PHP
PHP中如何定义和使用常量
Feb 28 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
sae使用smarty模板的方法
Dec 17 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 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+ajax导入大数据时产生的问题处理
2014/06/11 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
Javascript Objects详解
2014/09/04 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
详解js中==与===的区别
2017/01/08 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
Flask框架信号用法实例分析
2018/07/24 Python
python实现一组典型数据格式转换
2018/12/15 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
优秀应届生推荐信
2013/11/09 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
超市采购员岗位职责
2015/04/07 职场文书
论文评审意见
2015/06/05 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书