Php 在另一个类中调用函数的两种方法是否不同?

Php 在另一个类中调用函数的两种方法是否不同?,php,function,class,call,Php,Function,Class,Call,我有一节课 <?php class Test{ public function printword($word){ echo $word; } } ?> 在另一节课上,我叫它 <?php //Included needed files !!! $w = 'Hello'; //Way 1 $a = new Test; $result = $a->printword($w); //Way 2 $result = Test::prin

我有一节课

<?php
class Test{
    public function printword($word){
         echo $word;
    }
}
?>

在另一节课上,我叫它

<?php
//Included needed files !!!
$w = 'Hello';

//Way 1
$a = new Test;
$result = $a->printword($w);

//Way 2
$result = Test::printword($w);
?>

有什么不同吗


$a=新测试
$a=新测试()正确吗?

是的,不同。如果声明一个方法
static
,则无需实例化类即可访问它们

class Test{
    public function printword($word){
        echo $word;
   }
}

//Call printword method
$a= new Test();
$a->printword('Words to print');
静态方法:

class Test{
    public static function printword($word){
        echo $word;
   }
}

//Do not need to instantiation Test class
Test::printword('Words to print');

请参见。

是否不同?是的,一个是错的,另一个是对的。这里没有静态方法,因此需要使用
->
。和$a=新测试;或$a=新测试();是吗?二者都如果您想将参数传递给构造函数,那么当然必须编写括号;它还运行吗?使用公共静态函数printword()@Fil你能解释一下吗?是的,它运行了,但它错了。打开错误报告,您会得到一个关于它的警告,可以是ask,那么我们应该使用所有静态函数吗,因为它看起来简单,易于使用,并且不需要实例化?实际上,不,当静态方法本身完成并且不依赖于类的其他属性时,使用静态方法(例如,BB代码到HTML的语法转换器)