PHP面向对象程序设计类的定义与用法简单示例
发布时间 - 2026-01-10 22:08:40 点击率:次本文实例讲述了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基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 面向对象
# 程序设计
# 类
# 定义
# 用法
# PHP入门教程之面向对象的特性分析(继承
# 多态
# 接口
# 抽象类
# 抽象方法等)
# PHP面向对象程序设计高级特性详解(接口
# 继承
# 析构
# 克隆等)
# php面向对象全攻略 (十二) 抽象方法和抽象类
# php面向对象全攻略 (十七) 自动加载类
# PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约
# PHP面向对象程序设计之类常量用法实例
# PHP面向对象程序设计之类与反射API详解
# PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
# PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
# PHP学习记录之面向对象(Object-oriented programming
# OOP)基础【类、对象、继承等】
# 操作技巧
# 相关内容
# 感兴趣
# 给大家
# 更多关于
# 所述
# 运算符
# 编程技巧
# 讲述了
# function
# __construct
# private
# sex
# age
# method
# public
# visibility
# gt
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信小程序 canvas开发实例及注意事项
详解MySQL数据库的安装与密码配置
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何快速生成高效建站系统源代码?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何登录建站主机?访问步骤全解析
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何用已有域名快速搭建网站?
Swift中switch语句区间和元组模式匹配
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Python进程池调度策略_任务分发说明【指导】
如何用AWS免费套餐快速搭建高效网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
java ZXing生成二维码及条码实例分享
用v-html解决Vue.js渲染中html标签不被解析的问题
浅谈redis在项目中的应用
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
网站制作价目表怎么做,珍爱网婚介费用多少?
如何续费美橙建站之星域名及服务?
如何在 React 中条件性地遍历数组并渲染元素
浅谈javascript alert和confirm的美化
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Laravel如何创建自定义Artisan命令?(代码示例)
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
如何构建满足综合性能需求的优质建站方案?
详解Android图表 MPAndroidChart折线图
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何正确选择百度移动适配建站域名?
网站制作报价单模板图片,小松挖机官方网站报价?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
js实现点击每个li节点,都弹出其文本值及修改
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Python文件异常处理策略_健壮性说明【指导】
javascript中的try catch异常捕获机制用法分析
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
iOS中将个别页面强制横屏其他页面竖屏
如何在IIS7中新建站点?详细步骤解析
网站页面设计需要考虑到这些问题

