私は、自分のクラスにstandartオートローダーをspl_autoload_registerを使って作っています。しかし、私は問題があります。 spl_autoload_register
new演算子を使用してクラスをインスタンス化するときにのみmakeを実行します。だから、私は:$singleton = Name\Singleton::get_instance()
コードでは、オートローダが動作しないと私はこのファイルを手動で含める必要があります。どのように私はこの問題を解決することができますか?PHP、シングルトンのオートローディング
答えて
これは、彼らが必要としている時はいつでもクラスが自動的にロードされ、場合であってはなりません。名前空間を使用している場合は、名前空間/クラス名が正しいことを確認してください。 var_dump(class_exists('Name\Singleton'));
を実行して、クラスが存在するかどうかを確認することもできます。これは、オートローダーを確実に使用するためのものです。
関係なく、あなたがオブジェクトを作成したり、彼らがロードされます静的クラスにアクセスして乗り切ります。クラスは、したがって、その範囲内で解決演算子::
前にロードされるよう
あなたの例では、ファイルを動作します。
あなたは、あなたのオートローダちょうどaswellを得るのを助けるために、以下のリンクをご覧ください。
$App = new SplClassLoader('MyApp', '/myapp');
$App->register();
:
http://groups.google.com/group/php-standards/web/psr-0-final-proposal
と名前空間の提案として
は、すべてのルート名前空間を使用すると、(GitHubのバージョンで)次の操作を行います\<Vendor Name>\(<Namespace>\)*<Class Name>
ベンダーであるべきことが述べられています
名前空間を少し手伝ってくれるアップデート。
はDoctrineの呼び出しがEntityManagerのクラスの名前空間MyApp\Classes\Doctrine\Common
になり
namespace MyApp\Classes;
class SomeClass
{
public function __construct()
{
$Doctrine = Doctrine\Common\EntityManager::Singleton();
}
}
この例を見てみましょう。
Doctrine名前空間の外側に\
という文字列を追加する必要がある場合は、現在の名前空間にないと言うには、常に\
と指定する必要があります。
あなたの記事には、これがうまくいかない理由があります。
私は@Seldaekに同意するだろうし、あなたからメソッドを呼び出している名前空間になります。静的メソッドを呼び出すとき、あなたはどの名前空間にいますか? 'Name'名前空間にいる場合は、クラス名の前に名前空間名を付ける必要はありません。別の名前空間にいる場合は、メソッド名前に '\'を付けて、ルート名前空間に戻る必要があります($singleton = \Name\Singleton::get_instance()
など)。
実際の名前空間はちょっと台無しになりました。
あなたは、おそらくこのような何かやっているシングルトンだ場合:
自己:: $ _インスタンス=新しい自己を(); 、Actualy私はこの答えに間違っていた:それそれはいくつかの邪悪な理由でオートローダに
stdClass
を投げるだろう、と私は、トンでも理由を理解または溶液編集を見つけることができるので、めちゃくちゃになります
私は実際にはコンストラクタのstdClass
を使用していましたので、グローバルなスペースを使用する関数を使用してインポートしなければなりませんでした。実際には(オブジェクト)のキャストを使用していました。
stdClassをインポートした後、シングルトンはちょうど働いた
- 1. PHPシングルトンのデータベースクエリ
- 2. Zend Framework 2オートローディング
- 3. PHPのシングルトンと継承
- 4. zendフレームワークモデルの場所とオートローディング
- 5. psr-0/4オートローディングのフォールバックロケーション
- 6. Ruby:循環依存オートローディング
- 7. シングルトンまたはスタティック? PHPのベストプラクティス?
- 8. PHP - オートローディングの場合、なぜ依存性注入を使用しますか?
- 9. PHPシングルトン演技おかしい
- 10. PHP OOPシングルトンはオブジェクトを返さない
- 11. シングルトン
- 12. PHPクラスは、そのプロパティにシングルトンとのアクセスを拡張し
- 13. シングルトンでチェーンを破る場合のPHPの返り値配列
- 14. シングルトンのタグインターフェイス
- 15. ASP.NETのシングルトン
- 16. シングルトンとのデッドロックエラー
- 17. シングルトンのプライベートコンストラクタ
- 18. シングルトンの例
- 19. スウィフトのシングルトン
- 20. 「lib」ネームスペース/オートローディングで一貫性のない「LoadError」動作
- 21. テスト用データベースにオートローディング・フィクスチャの注文を決定するには
- 22. StructureMapシングルトン
- 23. シングルトン、4
- 24. WPF - シングルトン
- 25. シングルトン(Python)
- 26. シングルトンのデザインパターンの例
- 27. シミュレータ上のシングルトンと実際のデバイス上のシングルトン?
- 28. シングルトンのテストとサブクラス
- 29. Java enumシングルトンのアノテーション
- 30. シングルトンHttpClientの処理
+1私たちはDoctrine2/Symfony2のオートローダーも独自に使用しています。魅力のように動作します。 – DrColossos
私はドクトリン/ゾンデなどがすべて紙に従うと信じています。 – RobertPitt