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

PHP Classes:: Why declare as a new?

I'm very new to php classes and I was wonder why do I need to declare it to a variable and set it as NEW?

这是一个例子:

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

$hola = new myFirstClass;

echo $hola->Version();

Why this won't work WITHOUT declare it to a variable and set it to NEW ?

In other words... Without this line :

$hola = new myFirstClass;

I'm so used to functions so it looks weird to me...

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

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

The Basics

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

Classes and Objects

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

这一行:

$hola = new myFirstClass;

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

新实例的对象

这是Object面向编程(OOP)的基本原则。让我们以图书馆系统为例。如果你想得到一本书的名字,你不能只说 "give me the name of the book",你必须知道是什么书(通过 id,作者,等等)。

在函数中,你可以这样写:

function get_book($id){ // code }

在 OOP 中,它并不是那样工作的。你有一本记录了名字的 class 书。但该名称仅适用于给定的那本书。

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

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

为了调用getName()函数,我们需要有一本书。这就是 new 所做的。

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

现在,如果我们在 $book 上使用 getName() 函数,我们将获得标题。

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

希望对您有所帮助。

你说得对!没有必要使用 new 运算符:

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

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