深入理解PHP之设置类的属性

PHP:类的属性 阅读详情

事实上,PHP并没有强制所以的属性都要在类中声明。我们可以动态地添加属性到对象,如下所示:

class A {
    public $id = "12345";
    public $name = "aaa";
}
$a = new A();
$a->sex = "man";
print($a->sex);

但是,这种给对象赋属性的方法在面向对象编程中并不是一个良好的做法,我们基本上不用。至少,据我目前所知,C++、Java是不能直接这样添加的,可能会有一些其他的方法(用list、map)。
为什么说动态设置属性是一个坏习惯?因为你在创建类的时候就已经定义了数据类型,说明这个类(以及由类实例化的对象)是由特定的字段和函数集合组成。如果A类定义了一个$name属性,那么之后任何和a对象一起工作的代码都假设$name属性是可用的,但新增动态属性则没有这种保证。也就是说,你在实例化另一个对象aa时,它并不具有$sex这个属性,将会使程序报错。

$aa = new A();
print($aa->sex);

输出:

man
( ! ) Notice: Undefined property: A::$sex in ***

而且,还会有其他的不良影响,如拼错或忘记属性姓名时并不会的到警告。例如,错误的把这一行

$a->name = "aaa";

写作

$a->namee = "aaa";

因为PHP引擎认为这一行代码完全合法,所以不会发出警告。当我们开始输入名字时将会出现意想不到的效果。

深入理解PHP类的扩展与实现 本文深入探讨了PHP扩展开发中类的实现细节,包括如何向类中添加方法和属性,构造函数的添加,异常处理机制,以及如何实现自定义对象和私有变量。通过实例代码分析,展示了如何在C语言层面操作PHP对象,理解PHP内部对象存储的机制,以及如何通过工厂方法和接口的创建来优化代码设计。 阅读详情

相关推荐

深入理解PHP类与接口的使用

本文深入探讨了PHP中类和接口的高级用法。首先介绍了几个PHP内置函数如class_exists()、class_alias()、get_object_vars()等,这些函数帮助开发者在编写面向对象代码时进行类的检查和操作。接着,通过创建一个动态网站模板的例子,展示了如何利用类来管理Web页面的结构,使代码更加模块化和易于维护。文章还详细解释了PHP接口的概念、重要性和使用场景,包括如何通过接口实现多重继承和回调函数的功能。最后,通过实际代码示例演示了如何定义和实现接口,以及如何将接口应用于类的设计中。

weixin_42437253的博客 302

PHP中的动态属性是如何工作的?与静态属性有什么不同?

在PHP中,静态属性是定义在类中的,它们属于类本身,而不是类的某个具体对象。在PHP中,动态属性也是这样,它们不是事先定义好的,而是可以在运行时根据需要动态地添加到对象中的。继续用“学生”类来举例,如果我们定义了一个静态属性“班级总人数”,那么这个属性就用来记录整个班级的学生人数,而不是某个具体学生的信息。但是后来,我们发现还需要记录学生的“学号”,这时就可以在运行时动态地给这个对象添加一个“学号”属性,而不需要修改类的定义。在PHP中,动态属性和静态属性是两种不同类型的属性,它们有各自的特点和用途。

长风破浪会有时的博客 484

深入理解 PHP 静态方法与类常量的应用

本文深入探讨了 PHP 中静态方法与静态属性的应用,通过AudioClip类和SizeUtilities类的实例,详细解释了静态成员的使用场景和优势。同时,文章还介绍了如何通过静态方法跨应用程序共享资源,以及静态属性与类常量的区别。

weixin_32661831的博客 295

php 动态赋值,php动态添加属性和获取动态属性的方法

有时候当我们定义完一个类,在使用这个类的时候,发现少了一些属性,而这个属性可能是动态增加的,不是必须的,那么如果再去类里定义这个属性就显的很麻烦了。于是我就想到了用动态添加属性的方法。看下列代码里,即使类App没有text属性,也能对其赋值和显示。class App {}$obj = new App();$obj->text = 'Hello world!';echo $obj->te...

weixin_31309419的博客 1063

深入理解PHP类的特性与继承机制

本章节深入探讨了PHP中的类、对象以及继承等相关概念。首先介绍了如何通过$this关键字访问和设置对象属性,然后讲解了静态方法和静态属性的使用,以及final关键字和访问修饰符的含义和用法。接着,本章还涉及了类型提示、属性声明、属性的默认值和访问修饰符,以及类常量的定义和继承的原理。通过具体的代码示例和解释,本章帮助读者更好地理解PHP面向对象编程的核心概念。

weixin_35294091的博客 373

从零到一:微信小程序Camera组件实现高效连续扫码的实战解析

本文详细解析了如何利用微信小程序Camera组件实现高效连续扫码功能,适用于零售仓储、物流配送等场景。通过优化扫码核心机制、防抖处理和图像增强技术,开发者可以突破官方API限制,打造媲美专业扫码枪的流畅体验。文章还提供了性能基准测试和高级功能扩展方案,助力企业提升操作效率。

weixin_29015051的博客 579

PHP动态属性

因为PHP是动态语言,所以PHP是支持已经创建好类之后再给类赋予某些属性的 $myClass = new MyClass(); $myClass->myNewProp = 1; echo $myClass; 在php中,上边的做法是可以的.同样的在python中也是可以这么做的. 当这个属性不需要的时候,可以使用如下代码删除属性 unset($myClass->myNewProp); ...

Easul 431

Android AudioFlinger实战:如何用FastMixer优化低延迟音频流(附调试技巧)

本文深入解析了Android AudioFlinger的FastMixer线程机制,指导开发者如何利用该技术优化低延迟音频流。通过实战配置AAudio API、调整硬件缓冲区及线程优先级,并结合adb、Systrace等调试技巧,可将音频延迟显著降低至10毫秒以下,适用于音乐制作、游戏音效等实时音频处理场景。

weixin_29230901的博客 334

PHP中如何定义类及其成员属性与操作

1、类的定义:   类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{  //成员属性  $name     =  ''; //操    作 protected function getActionName() { return $thi

aiku_de_yu的博客 1万+

【题解-洛谷】B3644 【模板】拓扑排序 / 家谱树

有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。输出一个序列,使得每个人的后辈都比那个人后列出。如果有多种不同的序列,输出任意一种即可。),表示家族的人数。

写代码的犄角旮瘩 1062

SNAP计算哨兵二号的叶面积指数(LAI)

对于哨兵二号数据以及LANDSAT8数据,SNAP提供已经集成好的模块计算LAI。在Optical->Thematic Land Processing->Biopyhsical Processor目录下面。 对于经过Sen2Cor处理好的数据,需经过重采样才可进行计算。重采样工具在Raster->Geometric->Resampling。 如果选择Biopyhsical Processor S2_10m进行计算,需要将所有的波段都重采样为10米(哨兵二号的第二波段为10米,可据此波

gxwwww的博客 9414

php cg eg,php-model

php-model1、描述model 的相关操作,包含了模型的后台验证功能2、注意事项model 的相关操作,包含有attributeNames、setAttributes、getAttributes、getAttributeLabel、getAttributeLabels 等对于设置了 model 属性后,采用 validate 进行验证,验证成功返回true,否则返回false当验证失败时,通...

weixin_30320587的博客 192

openclaw通俗入门系列9——流式传输 + 分块

流式传输 = 不等写完就开始发。分块流式传输是把长回复切成几条消息发(所有渠道),草稿流式传输是像打字一样实时显示(仅 Telegram)。可以配置块大小、发送时机、合并规则、类人延迟。

m0_60605453的博客 506

__clone()方法

1 <?php 2 class NbaPlayer{ 3 public $name; 4 } 5 $james = new NbaPlayer(); 6 $james->name = 'James'; 7 echo $james->name."<br/>"; 8 9 $james2 = clone $james; 10...

weixin_30679823的博客 76

在 SAP BAS 中扩展标准 SAP Fiori 应用并部署到 ABAP 环境的完整实践指南

SAPUI5 Adaptation Project 摘要(148字) SAPUI5 Adaptation Project 提供了一种高效扩展标准Fiori应用的方式,通过创建应用变体(Application Variant)实现差异化定制。开发者可在SAP BAS中使用可视化编辑器修改UI元素(如隐藏字段、调整表格布局、添加按钮等),而无需重写业务逻辑。变体部署到ABAP环境后,可与标准应用并行使用,且能随原应用升级保持同步。典型应用场景包括为不同用户角色定制简化界面或增强特定功能,既满足个性化需求,又保留

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 183

手把手完整实现STM32+ESP8266+MQTT+阿里云服务器+手机APP应用——第一节—阿里云物联网平台配置+IoTStudio界面绘制+MQTT.fx模拟MQTT客户端与使用AT命令发布订阅消息

通过MQTT.fx模拟连接以及通过CH340串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266(本系列使用了ESP8266-ESP01/01S以及正点原子的ATK-ESP8266) 来连接网络,获取设备数据发送到阿里云物联网平台并显示数据,通过IOT studio界面显示数据并发送命令控制设备。本系列使用的主控芯片是STM32F103系列,当然也可以使用其他系列单片机都可以实现,思路都是一样的。同时本系列有手机APP源

嵌入式阿齐Archie 5万+

php获取private属性,PHP获取类私有属性的3种方法

今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思:顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:1. 反射反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的ReflectionProperty实例设置为可访问再取值即可。示例代码如下:namespace tlanyan;class Foo {private $bar = "Foo bar!";}// ...

weixin_39831567的博客 293

电压跟随器在ADC采样电路中的作用分析

电压跟随器在ADC采集系统中扮演关键角色,它能解决分压电路因ADC输入阻抗导致的电压误差问题。通过运放构成的电压跟随器可隔离信号源与负载,保证采样精度,尤其适用于高阻抗传感器或高速采样场景。工程应用中需注意运放带宽、轨对轨输出能力及抗干扰设计。合理使用电压跟随器能显著提升信号完整性,在复杂电子系统中成为不可或缺的"信号桥梁。

硬核科技 654

php 获得类所有属性值_PHP获取类私有属性的几种方式

今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思:顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:1. 反射反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的ReflectionProperty实例设置为可访问再取值即可。示例代码如下:namespace tlanyan;class Foo {private $bar = "Foo bar!";}// ...

weixin_32450633的博客 331

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深入理解php-amqplib中的AMQPMessage类

AMQPMessage是php-amqplib库中用于表示RabbitMQ消息的核心类。本文将详细介绍AMQPMessage的使用方法、属性配置以及消息确认机制,帮助开发者更好地利用这个库进行消息队列开发。 ## 消息持久化 在RabbitMQ中,消息持久化是确保消息不丢失的关键机制。通过设置`delivery_mode`属性,我们可以控制消息是否持久化: ```php $msg = new...

gitblog_00724的博客 378

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

class php 用变量赋值 类_php class类的用法详细总结

一:结构和调用(实例化):class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数。如$obj = new className($v,$v2…);二:构造函数和析构函数:1、构造函数用于初始化:使用__construct(),可带参数。2、但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能)。析构函数用__destruct(...

weixin_39980347的博客 1226

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php获取private属性,PHP获取类私有属性的几种方式

今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思:顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:1. 反射反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的ReflectionProperty实例设置为可访问再取值即可。示例代码如下:namespace tlanyan;class Foo {private $bar = "Foo bar!";}// ...

weixin_35812582的博客 336

php protected 属性,php 类 属性和方法的关系

一 . 属性关系1 . public属性:在类的外部和内部都可以调用 被继承能够重构2 . protected属性:在类的内部可以调用外部不能可以被继承并且重构3 . private属性:只有在类的内部调用 不能被继承4 . static属性:类的内部和外部都能调用 内部调用方法(self::属性变量) 外部调用方法(类名::属性变量)二 . 方法关系1 .public方法:在类的外...

weixin_32918953的博客 5791

php中私有属性的用法,PHP获取类私有属性的几种方式

今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思:顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:1. 反射反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的 ReflectionProperty实例设置为可访问再取值即可。示例代码如下:namespace tlanyan;class Foo {private $bar = "Foo bar!"...

weixin_36431018的博客 603

php类3个属性是哪3种,PHP获取类私有属性的3种方法

今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思: 顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:1. 反射反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的ReflectionProperty实例设置为可访问再取值即可。示例代码如下:namespace tlanyan;class Foo {private $bar = "Foo bar!";}//...

weixin_39600510的博客 92

php 类与对象

类与对象 通过定义类可以描述对象: 将一系列特征相似的对象中的属性和方法抽象出来的一段特殊代码称为一个类 类使用class关键字来进行定义,后面跟上类的名称 面向对象的三大特征 封装:是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体细节,这就是封装思想 继承性:主要描述的是类与类之间的关系,通过继承,可以无需重新编写原有类的情况下,对原有类的功能进行扩展 多态性:指的是同一操作作用于不同的对象,会产生不同的执行结果 1.类的定义格式: class 类名{ 类中的成员… } cl

zx616122的博客 1320
上一篇: Git上传代码新建仓库及错误解析
下一篇: 4种PHP异步执行的常用方式
山木枝
博客等级 码龄11年 8粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值