我仍然是OOP的新手,并且一直在学习CodeIgniter2 + Doctrine2。
我有几个共享功能,在我的项目的各个方面都很方便,所以我想打电话给他们。在程序PHP中,我只是将它们粘贴在库文件中并调用它们。但那现在对我不起作用..
include 'function_library.php';
$name = $this -> function_library -> generate_male_name();
消息:未定义属性:转动:: $ function_library
我甚至读过你需要使用call_function()
的地方,但那只能让我:
致命错误:调用未定义的方法Turn :: call_function()
所以我想也许我应该把它作为助手加载。
$this->load->helper('character_helper');
echo generate_male_name();
致命错误:在不在对象上下文中时使用$ this /PATH/systemFolder/helpers/character_helper.php 第19行
第19行:
$ query = $ this-> doctrine-> em-> createQuery(“从ORM \ Dynasties2 \ Malenames u”中选择max(u.id));
我考虑将其设置为图书馆,但老实说,在类等方面,我开始有点过头了。我没试过。
以下是该功能的全部内容:
function generate_male_name() {
$query = $this->doctrine->em->createQuery("select max(u.id) from ORM\Dynasties2\Malenames u");
$result = $query->getSingleResult();
//echo $result2[1];
$highval = $result[1];
$random_name = rand(1,$highval);
//echo $random_name;
$name = $this->doctrine->em->find('ORM\Dynasties2\Malenames', $random_name);
return $name->getName();
}
我该怎么做?
编辑:
尝试了一些额外的事情,仍然没有成功。
我把我的function_library放在third_party中,然后执行了:
$this->load->add_package_path(APPPATH.'third_party/function_library/');
$name = $this -> generate_male_name();
致命错误:调用未定义的方法Turn :: generate_male_name()
或$name = $this -> function_library -> generate_male_name();
消息:未定义属性:转动:: $ function_library
我并不是因为在自动加载器中调用它而感到疯狂,我不需要无处不在,这看起来效率低下。
我已经阅读了图书馆,但正如我所说,课程很快就在我的脑海中,创建一个新的图书馆对我来说似乎有点令人生畏。
* 这里最好的解决方案是什么?我如何分享一些功能?图书馆是我需要去的方式,还是我只是在尝试帮助或共享功能工作时遗漏了一些小事?*
答案 0 :(得分:0)
可能不是答案,只讨论CodeIgniter
致命错误:在不在对象上下文中时使用$ this 第19行的/PATH/systemFolder/helpers/character_helper.php
当您尝试在对象上下文之外使用带有CI
关键字的$this
实例时(当CI
未实例化时),会发生这种情况。观察上面的错误我可以猜测你在帮助器$this
内使用character_helper.php
,它位于helpers
文件夹内但在CI
对象上下文之外。要使用CI
对象,您必须使用
CI
$ci = & get_instance();
并在帮助程序中使用$ci
代替$this
。
如果您想在任何控制器内使用您的助手,那么您可以像往常一样在控制器内正常加载它,即
$this->load->helper('character_helper');
如果您的帮助者有一个函数generate_male_name
,那么您可以在控制器中调用它,如下所示
generate_male_name();
但是,这只能在您的控制器中直接使用 模特或你的观点。