为什么PHP没有像C++那样的属性'const'?

8

为什么PHP没有C++中等同于const的道德等价物?我认为PHP语言中缺少这个。有没有一种方法可以模拟与const对象或参数相同的属性?


4
PHP是一种脚本语言,运行在服务器端,因此您可以完全控制代码。为什么需要一个常量变量? - Jim Fell
我可能错了,因为我有一段时间没有接触PHP了,但我记得PHP有const关键字。 - Kheldar
我不懂C++,但是关于PHP常量呢?@Kheldar 是的,对于类常量,可以使用上面链接中提到的define()方法来定义全局常量。另请参阅http://php.net/manual/en/language.constants.php。 - feeela
2
@Jim:你对于C++代码的控制力比PHP代码少吗? - Steve Jessop
1
@Jim:这个想法是,一些编程思想/限制可以防止我们自己犯错,即防止或指出我们何时做错了事情。请参考面向对象编程(OOP)以及类型安全性的相关细节。 - Ed Heal
4个回答

4

C#也不支持const,它是一种非常通用的语言。

我很喜欢const,但我理解为什么脚本语言的脚本往往不使用它们:脚本语言非常适合“裸奔在树林中”,因为这是“有趣”的,并且添加新功能非常快速,因为你不会强制执行严格的类型正确性,包括const

Perl、Python和Ruby使用标量的原因以及传递/返回数组的原因是因为最初很容易“增长”系统。添加类型正确性,包括使用const,可能会真正减慢开发迭代。这些语言并不旨在创建“机器化的类型安全接口”,并且const是你首先获得类型安全后要做的事情。


7
在树林里跑步的问题在于你会在最奇怪的地方被木屑扎到! - Ed Heal
1
@Ed Heal:你是不是想说最痛苦的? - Puppy
1
C# 实际上有 var 关键字。我正在处理一些代码库,里面到处都是 goto 和 _var_。感觉就像在意大利吃了一顿很破烂的晚餐。不知道接下来在我的意大利面中会发现什么。 - Kheldar

2

C++在C语言家族中非常独特,因为它有“const”的概念。简单来说,“const”和正确使用const是很困难的,并且需要写看似重复的重载函数。这意味着许多旨在易于使用的语言-比如说,除了C++之外的几乎所有语言-都不认为这是复杂性值得回报的。


1
我强烈反对“const正确性会增加开发时间”的观点。添加const关键字所需的时间将在很多方面得到回报,确保一个应该被视为不可变的对象实际上具有语言所强制执行的属性。取一个const引用对象的能力是C++中最强大和有用的功能之一。 - dgnuff

0

你是指像 常量类变量 这样的吗,还是只是 常量

对于 引用传递参数,你可以使用 &,但默认情况下 PHP 中的所有对象都是按引用传递的,因此你只需要在基本类型(int、float、string、bool、array)中使用它。


3
在C++中,const关键字表示一个协议,即你不会对其进行更改。例如,你可以通过引用('&')传递一个变量,这意味着减少开销。你也可以说它是const,这意味着该函数承诺不会更改该对象,即仅可使用const方法! - Ed Heal
我并不像你一样精通C++。PHP中没有这样的功能。如果您不希望方法更改参数,则可以传递其副本(或使其创建对象的克隆)。在PHP中,按引用传递不会减少开销(至少不像在C++中那样显着)。 - Mchl

-1

2
它与C++中的const不同。 - Ed Heal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接