私は実際にオブジェクトのフィールドのデフォルト値を設定していましたが、Symfony3を学んでいて、私が追ってきたチュートリアルから学んだ共通の方法でDateTimeオブジェクトをデフォルト値として設定できないことを発見しました次のコード参照)。Symfonyオブジェクトのデフォルト値を設定する最も良い方法は何ですか?
<?php
namespace UTM\UsersBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="utm_users", uniqueConstraints={@ORM\UniqueConstraint(name="uuid", columns={"uuid"}), @ORM\UniqueConstraint(name="username", columns={"username"})}, indexes={@ORM\Index(name="group_id", columns={"group_id"})})
* @ORM\Entity
*/
class User
{
//...
private $var = 'value';
//...
}
私は解決策を探して、これを可能にするためにコンストラクタを使用できることを知りましたので、次のコードを実行しました。
<?php
namespace UTM\UsersBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="utm_users", uniqueConstraints={@ORM\UniqueConstraint(name="uuid", columns={"uuid"}), @ORM\UniqueConstraint(name="username", columns={"username"})}, indexes={@ORM\Index(name="group_id", columns={"group_id"})})
* @ORM\Entity
*/
class User
{
//...
private $var;
//...
public function __construct() {
$this->setVar(new DateTime('0000-00-01 00:00:00'));
}
//...
}
しかし、オブジェクトのデフォルト値を設定するにはどうすればよいでしょうか。 __construct関数のみを使用する方が良いか、これらの2つの方法を組み合わせた方が最良の方法です。
読んでいただきありがとうございます。私は誰かが私にこの質問に対する答えを提供してくれることを願っています。
以上することができますのための注釈を設定することを忘れないでください。ご存じのように、PHPのバージョンによってオブジェクトや定数を割り当てるのは問題があります。また、ctorを使用すると、インスタンス化時に「デフォルト」をオーバーライドすることができます。これは読み(プロトタイプパターン)の価値があるかもしれません:http://ralphschindler.com/2012/03/09/php-constructor-best-practices-and-the-prototype-pattern – ficuscr