在课堂上,大多数人使用public function name() { }
来定义方法。但是,我看到了几个没有public
关键字定义的示例,例如function name() { }
。我对此感到困惑,因为我认为你必须在课堂上使用public / private / protected。
我做了同样的事情,而function
正在完成与public function
完全相同的工作。
所以我的问题是,在课堂内使用function
和public function
有什么区别?
答案 0 :(得分:8)
忽略可见性遗留代码。 PHP 4不支持public
,protected
和private
,所有方法都是public
。
简短:"public function" == "function" // true
另请参阅PHP manual:
// This is public function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); }
同样var $attribute;
相当于public $attribute
。 var
版本也是PHP 4遗留代码。
答案 1 :(得分:2)
PHP> = 5没有区别。类方法可以定义为public,private或protected。声明没有任何显式可见性关键字的方法被定义为public。
答案 2 :(得分:2)
default visibility是公开的。如果声明的方法没有明确的可见性前缀,则它将是公共的。
以下声明是等效的:
function name() {};
public function name() {};
答案 3 :(得分:2)
如果未在php中设置方法的可见性,则与将其设置为public相同。
来自PHP Manual:
类方法可以定义为public,private或protected。方法 声明没有任何显式可见性关键字被定义为 公共
<?php
/**
* Define MyClass
*/
class MyClass
{
// Declare a public constructor
public function __construct() { }
// Declare a public method
public function MyPublic() { }
// Declare a protected method
protected function MyProtected() { }
// Declare a private method
private function MyPrivate() { }
// This is public
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
答案 4 :(得分:2)
如果您只使用function
进行定义,默认情况下, PHP 5 需要public
范围(默认值)。
function sample { }
和
public function sample { }
之间没有差异。
private
=&gt;可以在类
protected
=&gt;可以访问属性自己的类和子类
public
=&gt;可以访问应用程序中的任何地方。
答案 5 :(得分:-1)
在OOP中,PHP函数称为方法。
class MyClass {
public function aMethod() {
// (do stuff here)
}
function myMethod(){} //here public property is assumed
}
当您可选地忽略类中的public,private或protected关键字时。如果你这样做,公共假设。
private - &gt;仅在定义函数的类中可用
这些功能自php 5.X开始提供,它们可以控制变量或函数的可见性。
如果你看到一个带有标识符的函数,比如public,protected和private,它们都在类中。
public function functionName(){}
and
function functionName(){}
除了具有可见性级别之外,基本相同 是公共的,是面向对象的方式和其他php正常功能,没有可见性级别。