私はまだ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を機能させるために何かマイナーなものが欠けているだけですか?*