Php 如何在codeigniter中调用自定义助手的自定义同级方法并使用数据库

Php 如何在codeigniter中调用自定义助手的自定义同级方法并使用数据库,php,codeigniter,codeigniter-3,crud,grocery-crud,Php,Codeigniter,Codeigniter 3,Crud,Grocery Crud,编辑 <?php defined('BASEPATH') OR exit('No direct script access allowed'); function getCrud($table_name, $subject) { $CI =& get_instance(); $CI->load->database(); $crud = new grocery_Crud(); $crud->set_table($ta

编辑

<?php   defined('BASEPATH') OR exit('No direct script access allowed');




 function getCrud($table_name, $subject)
{

    $CI =& get_instance();
    $CI->load->database();

    $crud = new grocery_Crud();
    $crud->set_table($table_name);
    $crud->set_subject($subject);
    $crud->unset_read();
    $crud->unset_clone();
    $crud->where(array($table_name.'.flag' => '1'));

    $crud->callback_delete(function ($primary_key) use ($table_name) {
        return $CI->db->update($table_name, array('flag'=>'0'), array('id'=>$primary_key));
    });

    return $crud;
}

 function oneToMany($table_name, $subject, $rel_table,$field='name')
{

    $crud = getGrocreyCrud($table_name, $subject);
    $crud->set_relation($rel_table.'_id', $rel_table, 'name', array('flag' => '1'));
    $output = $crud->render();
    return $output;
}

也许下面的方法可以奏效

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');


if(!function_exists('getCrud'))
{
    function getCrud($table_name, $subject)
    {
        // some code
    }
}

if(!function_exists('oneToMany'))
{
    function oneToMany()
    {
        $CI =&get_instance();

        $crud = getCrud($table_name, $subject);
        return $crud ;
    }
}

要创建帮助程序还是库?看来你把这两者混在了一起,陷入了一个混乱的世界。我强烈建议您阅读Codeigniter用户指南,了解如何编写帮助程序/库。您“无法调用上述函数”是什么意思?这不起作用。虽然这解决了OP的全局变量和局部变量的问题,但它仍然不能工作,因为$CI->引用的是一个类方法,而这不是。OP仍然需要做一些阅读,明确他们打算做什么。示例中的getCrud函数是一个帮助函数,而不是类方法。所以它永远不会被这样调用。然后我们就有了参数传递的问题。$table_name和$subject来自哪里?
<?php 
defined('BASEPATH') OR exit('No direct script access allowed');


if(!function_exists('getCrud'))
{
    function getCrud($table_name, $subject)
    {
        // some code
    }
}

if(!function_exists('oneToMany'))
{
    function oneToMany()
    {
        $CI =&get_instance();

        $crud = getCrud($table_name, $subject);
        return $crud ;
    }
}

    class Gc_script
    {
        public $CI;
        public function __construct()
        {
            $this->CI =& get_instance();
            $this->CI->config->item('base_url');
        }

        public function getGrocreyCrud($table_name, $read=null)
        {
            $crud = new grocery_Crud();
            $crud->set_table($table_name);
            $crud->set_subject(ucwords(str_replace('_', ' ', $table_name)));

            $crud->callback_delete(function ($primary_key) use ($table_name) {
                return  $this->CI->db->update($table_name, array('flag'=>'0'), array('id'=>$primary_key));
            });

            return $crud;
        }
   }