我對OOP還很陌生,並且一直在用CodeIgniter2 + Doctrine2進行學習。CI2中的共享函數:Helper?圖書館?
我有幾個方便在我的項目的各個領域的共享函數,所以我想給他們打電話。在程序PHP中,我只是將它們粘在一個庫文件中並調用它們。但是,這不是爲我工作現在..
include 'function_library.php';
$name = $this -> function_library -> generate_male_name();
Message: Undefined property: Turn::$function_library
我甚至看的地方,你需要使用call_function()
,但只得到了我:
Fatal error: Call to undefined method Turn::call_function()
所以我想,也許我應該加載它作爲一個幫手。
$this->load->helper('character_helper');
echo generate_male_name();
Fatal error: Using $this when not in object context in /PATH/systemFolder/helpers/character_helper.php on line 19
第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();
Fatal error: Call to undefined method Turn::generate_male_name()
或$name = $this -> function_library -> generate_male_name();
Message: Undefined property: Turn::$function_library
我不是瘋了有關調用它自動加載,我並不需要它無處不在,這似乎效率不高。
我已經閱讀過圖書館,但正如我所說,類很快就在我的頭上,創建一個新的圖書館似乎不僅僅是對我來說有點令人生畏。
* 這裏最好的解決方案是什麼?我如何分享幾個功能?是一個圖書館,我需要去,還是我只是失去了一些東西在試圖使一個幫手或shared_functions事工作未成年人的方式嗎?*
嘗試自動加載配置文件中的幫助程序。你也可以嘗試將你的圖書館放在third_party文件夾中,加載並從那裏調用它。 – Lowkase 2012-04-23 13:09:26
在codeigniter中,您可以使用 $ ci =&get_instance();調用codeigniter的實例。 不確定關於教義雖然 – allen213 2012-04-23 13:18:51
http://codeigniter.com/user_guide/general/creating_libraries.html – allen213 2012-04-23 13:19:52