我可以在 PHP manual 中找到属性和方法的默认可见性.但是我找不到关于类(class)本身的任何信息。
我的猜测是它是公开的。但是,如果有人可以链接到手册中所写的部分,我将不胜感激。
最佳答案
简单地说
公开。 PHP 不支持除公共(public)类之外的任何内容。
与 Java/.NET/etc 不同,它没有任何包、程序集、内部或嵌套类的概念。命名空间本质上只是避免 IncrediblyLongClassNames 的语法糖,并且不能提供对可见性的任何实际更改。
整个想法在非编译语言中意义不大,因为无论您使用什么范围,任何人仍然可以使用您的类并将其公开声明。
PHP 7 附带条件:匿名类
PHP 7 引入了 anonymous classes * 的概念,允许即时类定义。作为一个非常基本的例子:
<?php
$foo = new class {
public function hello($what)
{
echo 'Hello ', $what, PHP_EOL;
}
};
(new $foo)->hello('world');
# Hello world
因为这些可以分配给变量,所以它们可以限制在该变量的范围内,并像其他任何变量一样传递。
与大多数允许匿名类的语言不同,在 PHP 中,它们不从定义它们的范围继承任何东西。链接文档中有一些示例,说明如何通过将匿名类定义为从父类继承或传入构造函数参数来解决此问题。
*严格来说,在幕后他们确实有名字,因此如果有人可以在实例上运行 get_class()
那么他们就可以实例化他们自己的副本,因为 they aren't garbage collected 。
关于php - PHP 默认情况下类的可见性是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455380/