我是php的新手并尝试在另一个类中调用函数。
如何在类xyz ???
中调用function1和function2class abc {
private $lmn = "lmn";
private $say1;
private static $static;
private function __construct(){
$say1 = print $this->lmn;
}
public static function1(){
$static = "YEAAHHHH";
}
public function function2(){
return $this->say1;
}
文件2:
require 'abc.php';
class xyz {
/**
* $e = new xyz();
*
*/
$e = xyz:: function1();// error
$d = xyz:: function 2(); //error
}
同样在什么情况下我应该使用
$obj = new class();
$obj->functionname();
和
$obj = class::functionname();
答案 0 :(得分:2)
这里有2种不同类型的方法,静态和非静态。
function1()
)
class zyx {
public function foo() {
return abc::function1();
}
}
function2()
)
class zyx {
public function foo() {
$abc = new abc();
return $abc->function2();
}
}
答案 1 :(得分:1)
可以在不实例化类的情况下调用静态函数...
$myClass::function1();
首先需要实例化非静态函数:
$myClass = new abc();
$myClass->function2();
所以在你的例子中:
require 'abc.php';
class xyz {
public function CallFunc1()
{
abc::function1();
}
public function CallFunc2()
{
$myClass = new abc();
$myClass->function2();
}
}
答案 2 :(得分:1)
require 'abc.php';
class xyz {
public function static(){
return abc:: function1();// this is a static function
}
public function nonstatic(){
$e = new abc();
return $e->function2();
}
}
答案 3 :(得分:1)
您可以将function1称为:
abc::function1();
abc
中的方法不是xyz
。
function2()
如果您有abc
的实例,则只会调用它,因为它是实例方法而不是静态方法。即。
$abc = new abc();
$abc->function2();
静态函数旨在在类上调用,实例方法(即function2()
旨在在类的实例上调用。我建议阅读http://php.net/manual/en/oop5.intro.php。< / p>
答案 4 :(得分:0)
首先,你不能在函数和2()之间留一个空格:
$d = xyz::function2(); //correct
$d = xyz::function 2(); //very incorrect
我会有第二个,但@hd打败了我。
答案 5 :(得分:0)
我认为你搞砸了代码。我可以与我发现非常有用的东西分享一些东西作为第二个问题的答案。花点时间阅读这篇文章。这是非常基本的,简单的,很好的指导。
http://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762