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
这一行:
$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
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
这一行:
$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