PHP 中类方法的默认可见性

我看了 手动操作,但我似乎找不到答案。

PHP 中没有可见性声明的方法的默认可见性是什么?PHP 像 Java 一样具有包可见性吗?

例如,在下面的代码中,go()是公共的还是私有的?

class test {
function go() {
}
}

我问这个问题的原因是,我见过许多构造函数代码写成 function __construct(),有些写成 public function __construct()。它们是等价的吗?

36496 次浏览

默认是公开的。总是包含它是一种很好的做法,但是 PHP4支持没有访问修饰符的类,所以在遗留代码中很容易看到没有使用这些修饰符。

而且,PHP 没有包可见性,主要是因为直到最近 PHP 还没有包。

默认值为 public。原因可能是向后兼容性,因为旧代码期望它是公共的(如果不是公共的,它就会停止工作)。

默认是公开的。

类方法可以定义为 public、 private 或 protected。没有任何显式可见性关键字声明的方法定义为 public。

Http://www.php.net/manual/en/language.oop5.visibility.php

默认可见性为 PUBLIC

来源

function __construct()public function __construct()作为相同的方法名工作。

如果无法为方法名定义前缀,则默认情况下该方法名应为 public。

当没有使用 能见度关键字(publicprivateprotected)时,方法将是 公众人士。但是,不能以这种方式定义属性。对于 物业,需要在声明中附加可见性关键字。

对于没有在类中声明的属性,并且在方法中为其赋值的属性将具有公共可见性。

<?php
class Example {
public $name;
public function __construct() {
$this -> age = 9; // age is now public
$this -> privateFunction();
}
private function privateFunction() {
$this -> country = "USA"; // this is also public
}
}