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
投稿
猜你喜欢
- Eric A. Meyer 对基于 Web 标准的 CSS 与 HTML 绝非一知半解,他是这个领域杰出的专家,曾写过不少 CSS 方面的书
- PHP registerXPathNamespace() 函数实例为下一个 XPath 查询创建命名空间上下文:<?php $xml=
- 微软现在已经进入了ASP.NET 2.0和Visual Web Developer 2005发布版最
- 摘要:下拉菜单经常带来更多的可用性问题,并且常常容易被混淆。这是因为网页设计师们往往会在不同的几种情况下使用它。同时,滚动的菜单降低了网页的
- 中国,美国,英国3国时间js同步动态显示,对于做企业网站的朋友相信用的到,特别是做英文网站的朋友,加上这一段代码会给你的网站增色不少!本文j
- 在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。对常见的针对表
- 一段非常简单代码普通调用方式def console1(a, b): print("进入函数")
- 改版背景创建专业的电子商务垂直搜索,以及把原有的信息聚合平台转型为在线采购批发交易平台。根据行业特点及交易需要,对原有的零批(小额批发)搜索
- 之前就见过很多网站在侧边栏上使用<dl />标签对来完成侧边栏栏目的布局,最近在研究DEDECMS的默认模板时,也发现该模板在大
- Semantics可翻译为语义的(学),它是Html/Xhtml是否真正符合标准的重要一环。Jorux在这和大家讨论一些自己的观点,如有不妥
- 写在前面:本节主要讲述一些基本的,常用的SQL语句,而非数据库方面的基本知识。数据库方面的知识留待以后再讲,现在就我们平常常用的一些SQL语
- 這兩天﹐對xml作為數據庫產生了興趣﹐找了一些資料﹐也搞出了一點眉目﹐在這里記錄一下。算是對自己學習x
- 1.不装入数据库而启动事例 可以不装入数据库而启动事例,一般是在数据库才创建时才可以这样做:STARTUP NOMOUNT2.启动事例并装入
- 【原文地址】 Tip/Trick: Supporting Full Screen Mode with Silverlight 【原文发表日期
- 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特
- 1.新建四个层,放入相应图片,模特层的z-index值设为0。2.把第一个层移到模特身上,找出衣服刚好穿上时层的top和left值,记下来,
- 一般情况下会有几种情况需要你把数据库设为只读: 1. Insert,Update,Delete 触发器 2. Check 约束 和 Dele
- Go 中接口也是一个使用得非常频繁的特性,好的软件设计往往离不开接口的使用,比如依赖倒置原则(通过抽象出接口,分离了具体实现与实际使用的耦合
- 之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度
- 在ASP.NET中,如何连接 SQLServer数据库?连接数据库:<%@ Import Namespace=&q