我是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;
我已经习惯了,所以看起来很奇怪......
答案 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
类和对象
答案 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
的新实例的对象。