codeigniter中的自定义助手

时间:2012-03-12 14:38:16

标签: php codeigniter helpers

我在./application/helpers中创建了一个自定义助手,但是我收到了这个错误

  

无法加载请求的文件助手/ curl_helper

这是我的帮助文件中的代码:

    function send(array $request, $url, $method)
{
    //Validating if the required extensions are installed or not
    if( !function_exists('json_encode') )   return false;
    if( !function_exists('curl_init') )     return false;

    //Converting the array into required json format
    $request = json_encode($request);

    //Setting header required for requests
    $header[] = "Content-type: application/json";
    $header[] = "Content-length: ".strlen($request) . "\r\n";

    //If the request method is get append the data into requests header
    if( $method == 'GET' or $method == 'get' )      $header[] = $request;

    //Initializing curl
    $ch = curl_init();
    //Setting curl options for request
    curl_setopt( $ch, CURLOPT_URL, $url);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
    curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $method );

    //If the request method is post add the data we need to enable post 
    //request and define the data in post fields
    if( $method == 'POST' or $method == 'post' ) {
        curl_setopt( $ch, CURLOPT_POST, 1);
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $request);
    }

    //Executing the curl request and storing the result in a variable
    $result = curl_exec( $ch );
    //Closing curl conneciton
    curl_close($ch);

    return json_decode($result);
}

我正在我的库中加载它,如:

$this->loader =& get_instance();
$this->loader->load->helper('curl');

告诉我我做错了什么?

更新
在我将函数放在我想要使用的同一个库中时尝试了太多的东西后我发现行中有错误

curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );

当我评论此行功能正常。我不知道错误在哪里请帮助我。而且据我所知这是装载机错误的原因。

3 个答案:

答案 0 :(得分:3)

您使用的是CodeIgniter> = v 2.0.3吗?检查代码点火器加载程序代码,我只能看到辅助加载失败的几种方法:

  • 文件未正确命名。你的文件必须有.php扩展名,即。 curl_helper.php但似乎你已经检查了这个。
  • 文件位置不正确(应用程序/帮助程序)。再次,似乎你已经检查了这个。
  • 正在运行的Web服务器无法访问文件。权限问题?
  • 子类前缀:您的配置设置是什么 对于子类前缀?这是默认设置:

    $ config ['subclass_prefix'] ='MY _';

    CI允许用户通过为其添加前缀来覆盖其默认帮助程序。例如,您可以通过使用名为MY_array_helper.php的文件来覆盖数组助手。如果碰巧是您的帮助程序与子类前缀匹配,则CI假定您尝试覆盖系统帮助程序并尝试确保帮助程序存在于系统帮助程序目录中。例如,如果你在application / helpers / MY_curl_helper.php中有一个帮助器,那么CI会检查system / helper / curl_helper.php中是否存在帮助器。换句话说,确保助手的文件与子类前缀不匹配。

答案 1 :(得分:1)

好吧,如果您使用"MY_helpername",那么请检查您是否将服务器上的文件命名为“my_helpername”,我不知道原因,但CI会查找{{1在helpers文件夹中,但不是my_helpername.php。我以前遇到过这个问题,将我的linux框上的名称从MY_helpername改为MY_helpername为我工作。

希望这有帮助

答案 2 :(得分:-1)

解决方案:对我来说,将文件重命名为小写,并且工作正常。