【发布时间】:2016-11-22 03:54:06
【问题描述】:
我可以在PHP manual 中找到属性和方法的默认可见性。但我找不到任何关于课程本身的信息。
我的猜测是它是公开的。但是,如果有人可以链接到手册中所写的部分,我将不胜感激。
【问题讨论】:
-
PHP 不支持公共类以外的任何东西
-
PHP 没有包的概念(命名空间有些相似但不一样),类可见性的概念在 PHP 中没有意义。他们实际上总是公开的
-
在 PHP 中,类通常总是公开的;现在在 PHP 7 中有一个例外......“匿名类”,其定义和实例化总是直接在您的代码控制之下的类,因此可以用作私有类
-
@ÁlvaroGonzález 如果我用 PHP 编写一个类库,那么使用该库的每个人都可以直接访问实例化该库中存在的任何类,无论何时何地;这可能并不总是一个好主意。非公共类将允许我定义只能从我的库本身实例化的类,从而减少直接访问外部代码导致问题的可能性
-
@ÁlvaroGonzález 在 Java 中,未明确声明为
public的类只能由同一包中的类使用(想想 PHP 中的namespace)。在 C# 中,未显式声明为public的类默认被视为internal,这意味着它们只能由同一程序集中的类使用(我认为 PHP 中没有相应的概念)。 “被使用”包括继承等。总体而言,类可见性是一个不错的功能,因为它允许隐藏作为实现细节的类,从而改进程序模块的封装。
标签: php oop visibility