PHP类::为什么声明为新类?
我对php类非常陌生,我想知道为什么我需要将其声明为变量并将其设置为新的 以下是一个例子:PHP类::为什么声明为新类?,php,function,class,variables,object,Php,Function,Class,Variables,Object,我对php类非常陌生,我想知道为什么我需要将其声明为变量并将其设置为新的 以下是一个例子: class myFirstClass { function Version(){ return 'Version 1'; } function Info(){ return 'This class is doing nothing'; } } $hola = new myFirstClass; echo $hola->Version
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;
我太习惯函数了,所以看起来很奇怪…要创建类的实例,必须使用new关键字。除非对象定义了一个在出错时抛出异常的构造函数,否则将始终创建该对象。类应该在实例化之前定义(在某些情况下这是一项要求) 如果包含类名称的字符串与new一起使用,则将创建该类的新实例。如果类位于命名空间中,则执行此操作时必须使用其完全限定名 基础 类和对象 这一行:
$hola=新的myFirstClass代码>
正在说:创建一个名为$hola
的新对象,然后将myFirstClass
的新实例放入$hola
中。现在,$hola
实际上是一个对象,包含了一个新的myFirstClass
的实例,这是面向对象编程(OOP)的基本原理。让我们以图书馆系统为例。如果你想知道一本书的名字,你不能只说“给我书名”,你必须知道是哪本书(通过身份证、作者等等)
在函数中,可以编写如下所示的函数:
function get_book($id){ // code }
在面向对象编程中,它实际上不是那样工作的。你有一本有名字的教科书。但这个名字只适用于那本书
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"
希望有帮助。你说得对!无需使用新的运算符:
class myFirstClass {
static function Version(){// static keyword
return 'Version 1';
}
function Info(){
return 'This class is doing nothing';
}
}
echo myFirstClass::Version();// direct call
您必须创建一个实例。这就是为什么要使用new
,因为OOP就是这样工作的。您需要为myFirstClass
对象创建一个“新”实例。您必须在OOP中阅读更多内容,这就是它的工作原理!你可以把这个类想象成一个平面,然后用新的方法从这个平面创建一个精确的副本,然后构建一个对象!然后计划你不能使用,但如果你已经做了你的对象,你可以使用这个!我可以说,函数是一个计划,我将新的变量传递给该函数,并创建一个全新的结果,从零开始,我可以将其视为与使用类相同(或几乎相同)的结果。那么为什么函数不需要这种声明呢?哪种声明?你是说修饰符public
,private
等等吗?我知道了,但还是。。。我不明白为什么我需要将其传递给变量,而不能将其用作函数,例如:echo myFirstClass->Version();这是一种引用对象的方式,仅此而已!您可以调用$hola.someMethod();如果您正在访问一个静态方法,则使用来自它的方法。这完全取决于你想做什么。