我如何在Class方法中调用函数

时间:2017-11-14 18:20:03

标签: php

我想在类方法中调用一个函数,我创建了这个脚本但是不能正常工作?

  

致命错误:在第12行的/.../.../index.php中调用null上的成员函数function2()

    public static function table($name_t, callable  $callback){
    self::databaseConnection();
    try {

        $matches = array(
            .....
        );


        function engine($var){
            Gaia::$engine__ = $var[0];
        }

        $eng = new Table_call;
        echo $eng;


        $callback($matches);

        if(isset(self::$s)){
            //self::$instance->exec("CREATE TABLE IF NOT EXISTS ".$name_t."( ".trim(self::$s,',')." ) ENGINE=MyISAM DEFAULT CHARSET=utf8;");

            echo "Dump Success!<br> ".self::$engine__ ;
        }

        //return $bgj;
    } catch (Exception $e) {
        self::$instance = null; 
        echo ("Oh noes! There's an error in the query: ". $e);
    }

}

班级档案2

class Table_call extends Gaia{

     public function __call($name,$arg){
      call_user_func($name,$arg);
     }
 }

索引文件

Gaia::table('test', function($table){
   $table['autoIncrement']('id');
})->engine('MyISAM');

如何以这种方式添加功能?

" ->function2('hello') "?

1 个答案:

答案 0 :(得分:0)

我不知道这是不是你想要的,但这是我能做的最小的例子。在你的问题中我不清楚你究竟想要做什么,因为你发布的任何代码都没有function2,所以我不得不猜测那是什么。总之...

<?php
class Gaia{
    public static function table(){
        return new Table_call();
    }
}

class Table_call extends Gaia{

    public function function2(){
        echo __METHOD__;
    }

}

Gaia::table()->function2();

你可以在这里试试。

http://sandbox.onlinephpfunctions.com/code/dd1c5db302448e8f075a081acfc33cb00c3f71b5

查看你的代码,你没有返回任何对象来调用第二个函数。以这种方式思考

$var =  Gaia::table();
 //var is an instance of Table_call
$var->function2();

也是你的错误

  

致命错误:在第12行的/.../.../index.php中调用null上的成员函数function2()

默认的返回类型是NULL所以......