我对 OOP 还是很陌生,并且一直在学习 CodeIgniter2+Doctrine2。
我有几个共享函数在我的项目的各个领域都很方便,所以我想调用它们。在程序 PHP 中,我只需将它们粘贴在库文件中并调用它们。但这对我现在不起作用..
include 'function_library.php';
$name = $this -> function_library -> generate_male_name();
消息:未定义属性:Turn::$function_library
我什至读过你需要使用的地方call_function()
,但这只让我:
致命错误:调用未定义的方法 Turn::call_function()
所以我想也许我应该把它作为一个助手加载。
$this->load->helper('character_helper');
echo generate_male_name();
致命错误:在第 19 行的 /PATH/systemFolder/helpers/character_helper.php 中不在对象上下文中时使用 $this
第 19 行:
$query = $this->doctrine->em->createQuery("select max(u.id) from ORM\Dynasties2\Malenames u");
我考虑将其设置为图书馆,但老实说,就类等而言,这开始让我有点不知所措。我还没有尝试过。
这是该功能的全部内容:
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();
消息:未定义属性:Turn::$function_library
我并不热衷于在自动加载器中调用它,我不需要在任何地方使用它,这似乎效率不高。
我已经阅读了有关库的内容,但正如我所说,类很快就让我头晕目眩,创建一个新库对我来说似乎有点令人生畏。
*这里最好的解决方案是什么?我如何共享一些功能?图书馆是我需要走的路,还是我只是在尝试使助手或 shared_functions 工作时遗漏了一些小东西?*