PHP面向对象程序设计类的定义与用法简单示例
作者:EthanQ 发布时间:2023-11-22 17:31:17
标签:PHP,面向对象,类的定义
本文实例讲述了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程序设计有所帮助。
0
投稿
猜你喜欢
- 这篇博客将介绍如何使用OpenCV制作Mask图像掩码。使用位运算和图像掩码允许我们只关注图像中感兴趣的部分,截取出任意区域的ROIs。应用
- 本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考。具体实现方法如下:#_*_ coding=utf-
- <html> <head> <meta http-equiv="Content-Type"
- 最近了解下基于 Token 的身份验证,跟大伙分享下。很多大型网站也都在用,比如 Facebook,Twitter,Google+,Gith
- 有几个原因促使我们使用自定义的select控件来代替原生的select控件:在ie6下select是一个窗口级的元素,绝对定位的层会被sel
- 一、概述使用K-means进行用户聚类划分主要的目的是实现用户画像的电影推荐系统,该推荐包括两部分,第一部分通过协同过滤实现电影推荐 ,第二
- 一条撤回的微信消息,就像一个秘密,让你迫切地想去一探究竟;或如一个诱饵,瞬间勾起你强烈的兴趣。你想知道,那是怎样的一句话?是对方不慎讲出的真
- numpy.random.shuffle在做将caffe模型和预训练的参数转化为tensorflow的模型和预训练的参数,以便微调,遇到如下
- 今日使用 npm init webpack love 创建一个新项目,然后执行 npm run dev 之后项目报错,提示错误如下:没有给这
- plotly 的 Python 软件包是一个开源的代码库,它基于 plot.js,而后者基于 d3.js。我们实际使用的则是一个对 plot
- 以前碰见这种使用场景都是直接order by rand()来处理的,但是效率实在是不敢恭维,所以最近又碰见这种场景,在网上找寻下比较好的解决
- 本文实例讲述了Python smallseg分词用法。分享给大家供大家参考。具体分析如下:#encoding=utf-8 #import p
- 1、Case 子查询连接查询select * from score create database demo use demo create
- python 实现pacs功能 推送下拉影像dcmtk关联pacs技术笔记:简介1、dcmtk关联pacs的参数介绍2、dcmtk命令介绍3
- 本文实例为大家分享了Pygame框架实现飞机大战的具体代码,供大家参考,具体内容如下飞机大战主游戏类"""项目
- Readme:blog address:摘要:编写登录接口输入用户名、密码认证成功后显示欢迎信息输错3次后锁定关键词:循环;判断;外部数据读
- 本文实例讲述了Python实现提取XML内容并保存到Excel中的方法。分享给大家供大家参考,具体如下:最近做一个项目是解析XML文件,提取
- asp程序运行速度试验实验:1。作相同的分支条件判断:IF 比 SELECT慢。用以下程序测试:
- 1. 可选链从 v3.7 可用这是当你尝试访问嵌套数据时的一个痛点,嵌套数据越多,代码就会变得越繁琐。在下面的例子中,要访问address,
- 代码如下:ALTER function [dbo].[GetOrderNum]( @ebaystockflag varchar(20)//规