我有整个项目的大师班。我需要将master类函数调用到不同的页面和方法,如下所述:
Master.php
class master{
function login_parser(){
}
}
的index.php
include('master.php')
function test(){
$obj = new master();
}
function test2(){
obj = new master();
}
我需要为每个方法调用object。有没有办法一次调用一个对象?
答案 0 :(得分:2)
你可以将该对象作为参数提供给函数,因此很明显存在对该对象的依赖,也可以是类型化的(如果仅通过全局使用它就会丢失)
$obj = new master();
function test(master $obj) {
...
}
然后致电:
test($obj);
答案 1 :(得分:1)
有很多方法可以实现这个目标
Tobias Zander提供了参数选项(依赖注入)
专业人士:了解功能需要什么
缺点:最终可能会给函数提供大量参数
$obj = new master();
function test(master $obj) {
...
}
第二种方式可能是使用全局
专业人士:没有参数链
缺点:不知道函数有哪些依赖
$obj = new master();
function test(){
global $obj; //Now carry on
}
第三种方式,单身人士
专业人士:面向对象的方式
缺点:不知道依赖
在这个主类中需要一个自我返回的静态函数
class Master
{
protected static $master ;
public static function load()
{
if(!self::$master instanceof Master) {
self::$master = new Master();
}
return self::$master;
}
}
现在我可以使用load函数在我的脚本中的每个位置使用master,它只会被启动一次
function test()
{
$master = Master::load();
}
我个人使用方法1,但比一个类 课堂考试 { protected $ master;
public function __construct(Master $master)
{
$this->master = $master;
}
public function whoo()
{
// now I can use $this->master as the master class
}
}
答案 2 :(得分:0)
是的,而不是每次都创建对象。在全局范围内的函数外部创建。
include('master.php')
$obj = new master();
function test(){
global $obj; //Now carry on
}
function test2(){
global $obj;
}