鱼C论坛

 找回密码
 立即注册
查看: 2054|回复: 5

[庖丁解牛] 0 0 4 3 ● 声明常量和属性

[复制链接]
发表于 2018-11-7 11:01:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-11-7 15:33 编辑

dd9c2719a1e706905707576958f07415.jpg


写这篇帖子的时候,刚好立冬,记得添衣裳哦

在类中不必直接(显示)声明属性,因为初次使用它们时可以被间接(隐式)定义。

为了解释清楚,我们用代码说话:
<?php
$object1 = new User();
$object1->name = "小甲鱼";

echo $object1->name;

class User{}
}
?>

这段代码可以正确输出“小甲鱼”,因为PHP间接地声明$object->name 。

但是这种编程方式会导致很难发现的bug,因为name属性是在类外声明的。

很危险,把核心变量仍在外面,很容易被“污染”(该值),建议养成在类中声明属性的习惯。

同样,在类中声明一个属性时,可以赋给该属性一个默认值,这个值必须是常量

不能是函数或表达式的计算结果,举一个错误示范:
游客,如果您要查看本帖隐藏内容请回复


后面两种方式由于调用了函数和表达式所有都无效。




声明常量

如同可以用define函数创建全局变量一样,也可以在类内定义常量。

通常做法是使用大写字母来凸显它们。

还是一段代码演示:
<?php
Myequal::show();

class Myequal{
        const API1 = 0;
        const API2 = "小甲鱼";

        static function show(){
        echo self::API2;
}
};
?>
Snip20181107_35.png


使用self关键字和双冒号操作符能够直接引用常量。

注意这段代码在第一行直接调用类,没有进行实例话。

正如结果所示,运行代码最终正确输出“小甲鱼”。

记住:
一旦定义了一个常量,就不能改变它的值。





这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 08:29:28 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 14:45:31 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-12 00:33:45 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 19:49:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-12 12:20:41 From FishC Mobile | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表