空のコンストラクタを定義するか、コンストラクタの定義を完全にPHPのままにしておくことをお勧めしますか?私はコンストラクタを定義する習慣がreturn true;
だが、コンストラクタは何もする必要がなくても完了するためだ。PHPの空のコンストラクタ
答えて
コンストラクタを必要としない場合は、除外することをお勧めします。コードを書く必要はありません。あなたがそれを書いたら、それを空のままにしてください...真を返すことは目的を持っていません。
コンストラクタは常に、定義されたクラスのインスタンスを返します。したがって、コンストラクタ内では "return"を使用しません。最後に、あなたがgonaを使用していない場合は、それを定義しない方がいいです。
オブジェクトをインスタンス化しない場合は、空のコンストラクタを定義してください。その場合は__construct()
を非公開にしてください。
EDIT:PHPは現在、他のオブジェクト指向プログラミング言語のように振る舞うので、
以前の答えは、もはや有効ではありません。 コンストラクタは、インターフェイスの一部ではありません。したがって、あなたが今、あなたは
いかなる問題もなく好むどのようにそれらを無効にするために許可されている唯一の例外は、次のとおりです。
interface iTest
{
function __construct(A $a, B $b, Array $c);
}
class Test implements iTest
{
function __construct(A $a, B $b, Array $c){}
// in this case the constructor must be compatible with the one specified in the interface
// this is something that php allows but that should never be used
// in fact as i stated earlier, constructors must not be part of interfaces
}
OLD PREVIOUS-VALID NOT-もう答え:
が空のコンストラクタとコンストラクタがまったくない場合の重要な違いです。
class A{}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
VS
class A{
function __construct(){}
}
class B extends A{
function __construct(ArrayObject $a, DOMDocument $b){}
}
// error B::__construct should be compatible with A constructor
それだけでなく、 'A'に定義済みのコンストラクタがあり、' B'に定義済みの空のコンストラクタがある場合は、基本的にはコンストラクタを削除しますが、それを完全に残しておけば、親を継承しますコンストラクタ。結論は、空のコンストラクタを「常に」または「決して」含むべきではなく、どちらかを行うときに同じことを「常に」意味するわけではないということです。それはすべてコンテキストに関するものです。 – Jason
2つの違いがあります。空の__construct()
関数を記述すると、親クラスから継承した__construct()
を上書きします。
それを必要とせず、親コンストラクタを明示的に上書きしたくない場合は、まったく書き込まないでください。
- 1. RailsのActiveModel空のコンストラクタは
- 2. 名前空間内のコンストラクタ
- 3. jQueryスタイルPHPのコンストラクタ
- 4. MVVMのDataTemplateと非空のビューモデルのコンストラクタ
- 5. PHPのコンストラクタの継承
- 6. コンストラクタ内のphpオブジェクトのキャッシング
- 7. C++空文字列コンストラクタ
- 8. コンストラクタargsのSpring p名前空間?
- 9. 空のコンストラクタとnewInstanceを持つフラグメント
- 10. php oopコンストラクタ
- 11. PHP空のオブジェクトメンバー
- 12. PHP空の値
- 13. PHP - 空の配列
- 14. PHPのISSET()VS!空()
- 15. PHPの静的メソッドのコンストラクタ代替
- 16. 空の角かっこのあるデフォルトのコンストラクタC++のエラー
- 17. PHPの空のvar == 0? PHPで
- 18. PHPのコンストラクタと静的関数
- 19. 2つの空のキーPHP
- 20. 空の初期化を伴うコンストラクタの初期化リスト
- 21. スーパークラスのコンストラクタはPHPの子コンストラクタ内で実行されますか?
- 22. jquery.loadのphpエコー空白
- 23. PHPの名前空間5.2
- 24. php preg_replace複数の空白
- 25. PHP:空白ページの取得
- 26. オープン.PHPショー空白のページ
- 27. 空のmysqldumpファイル(PHP付き)
- 28. PHPでの空間インデックスクエリ
- 29. MySQLとPHPで空のデータベース?
- 30. PHPの分割と空白
コンストラクタの戻り値は完全に無視されます。 – KingCrunch
実際に、コンストラクタの内側に戻ってきた人が見つかった場合、自分のコードを自分のものとマージすることは決してありません。 –