|
看了ci手册里面关于辅助函数的创建那一节(下面是原文):
"扩展" Helpers
你如果想 "扩展"一个原有的 Helpers,,可以在你的 application/helpers/ 目录下创建一个新的helper,新的helper的名字是在被“扩展”的Helper的名字开头多加一个 MY_ (这是可以配置的. 见下.).
如果你想做的只是在原有的helper中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;就不值得重写自己的helper。在这种情况下,最好是“扩展”已有的helper。“扩展”一词用在这里不是很恰当,因为Helper的方法是procedural 和 discrete的,在传统的语言环境中无法被“扩展”,不过在CodeIgniter中,你可以添加或修改helper的方法。
例如,扩展一个本地已有的 Array Helper 你应该建立一个文件: application/helpers/MY_array_helper.php, 并添加或重写(override)其中的一些方法:
// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
$needle = (is_array($needle)) ? $needle : array($needle);
foreach ($needle as $item)
{
if (in_array($item, $haystack))
{
return TRUE;
}
}
return FALSE;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
shuffle($array);
return array_pop($array);
}
首先:我按照上面的步骤,在application中的helper建立了一个文件:MY_array_helper.php,里面的内容稍做了修改,如下:
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function any_in_array()
{
$a="aaaaaa";
echo $a;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element()
{
$b="bbbb ;
echo $b;
}
然后:我在controller中建立了一个ajia.php,内容如下:
<?php
class Ajia extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper('array');
}
public function index()
{
$this->array->any_in_array();
$this->array->random_element();
}
}
最后:测试是否扩展成功,url中输入http://localhost/ci/ajia/index 但最终提示了错误如下:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Ajia:array
Filename: controllers/ajia.php
Line Number: 13
Fatal error: Call to a member function any_in_array() on a non-object in E:\wamp\www\ci\application\controllers\ajia.php on line 13
1、里面的代码为方便测试,简单了编写,最后错误不知道是什么原因,同样的我测试了扩展library中的类库,测试成功,这两者的原理是差不多的我理解的
2、求助啊!!!!!! |
|