在PHP中,如何将master类函数调用到不同的页面?

时间:2013-05-09 09:58:33

标签: php

我有整个项目的大师班。我需要将master类函数调用到不同的页面和方法,如下所述:

Master.php

class master{

    function login_parser(){

    }
}

的index.php

include('master.php')

function test(){
    $obj = new master();
}

function test2(){
    obj = new master();
}

我需要为每个方法调用object。有没有办法一次调用一个对象?

3 个答案:

答案 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;
}