PHP类::为什么要声明为新的?

时间:2015-01-02 21:29:49

标签: php function class variables object

我是php类的新手,我很想知道为什么我需要将它声明为变量并将其设置为NEW?

以下是一个例子:

class myFirstClass {
    function Version(){
        return 'Version 1';
    }
    function Info(){
        return 'This class is doing nothing';
    }
}

$hola = new myFirstClass;

echo $hola->Version();

为什么这不起作用没有将它声明为变量并将其设置为NEW?

换句话说......没有这一行:

$hola = new myFirstClass;

我已经习惯了,所以看起来很奇怪......

4 个答案:

答案 0 :(得分:4)

这是面向对象编程(OOP)的基本原理。我们以图书馆系统为例。如果你想得到一本书的名字,你不能只是说'#34;给我这本书的名字",你必须知道什么书(由id,作者,无论如何)。

在函数中,您可以编写如下所示的函数:

function get_book($id){ // code }

在OOP中,它并没有真正起作用。你有一本保留名字的课本。但这个名字只适用于那本书。

class Book {
  var $name;
  public __construct($name) {
    $this->name = $name;
  }

  public function getName() {
    return $this->name;
  }
}

为了调用getName()函数,我们需要一本书。这就是新功能。

$book = new Book("my title");

现在,如果我们在getName()上使用$book功能,我们就会获得标题。

$book->getName(); // returns "my title"

希望有所帮助。

答案 1 :(得分:2)

要创建类的实例,必须使用new关键字。除非对象具有定义的构造函数,否则将始终创建一个对象,该构造函数会在出错时抛出异常。应该在实例化之前定义类(在某些情况下这是一个要求)。

如果包含类名称的字符串与new一起使用,则将创建该类的新实例。如果类在命名空间中,则在执行此操作时必须使用其完全限定名称。

  

基础知识

http://php.net/manual/en/language.oop5.basic.php

  

类和对象

http://php.net/manual/en/language.oop5.php

答案 2 :(得分:2)

你是对的!没有必要使用new运算符:

class myFirstClass {
    static function Version(){// static keyword
        return 'Version 1';
    }
    function Info(){
        return 'This class is doing nothing';
    }
}

echo myFirstClass::Version();// direct call

答案 3 :(得分:1)

这一行:

$hola = new myFirstClass;

说:创建一个名为$hola的新对象,然后将myFirstClass的新实例放入$hola。现在$hola实际上是一个包含myFirstClass的新实例的对象。