类中函数和公共函数之间的区别

时间:2014-02-20 16:57:23

标签: php function class

在课堂上,大多数人使用public function name() { }来定义方法。但是,我看到了几个没有public关键字定义的示例,例如function name() { }。我对此感到困惑,因为我认为你必须在课堂上使用public / private / protected。

我做了同样的事情,而function正在完成与public function完全相同的工作。

所以我的问题是,在课堂内使用functionpublic function有什么区别?

6 个答案:

答案 0 :(得分:8)

忽略可见性遗留代码。 PHP 4不支持publicprotectedprivate,所有方法都是public

简短:"public function" == "function" // true

另请参阅PHP manual

// This is public
function Foo()
{
    $this->MyPublic();
    $this->MyProtected();
    $this->MyPrivate();
}

同样var $attribute;相当于public $attributevar版本也是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关键字时。如果你这样做,公共假设。

  • public - &gt;可在整个范围内使用,这意味着它可以随处访问
  • protected - &gt;在类或其子类中可用。
  • private - &gt;仅在定义函数的类中可用

    这些功能自php 5.X开始提供,它们可以控制变量或函数的可见性。

如果你看到一个带有标识符的函数,比如public,protected和private,它们都在类中。

public function functionName(){} 

and 
function functionName(){}
除了具有可见性级别之外,

基本相同     是公共的,是面向对象的方式和其他php正常功能,没有可见性级别。