클래스의 속성을 객체로 설정할 수 있습니까?PHP 속성을 객체로 사용
처럼 : 생성자에서
class User {
public $x = "";
public $y = new ErrorVO();
public $w = new array();
}
클래스의 속성을 객체로 설정할 수 있습니까?PHP 속성을 객체로 사용
처럼 : 생성자에서
class User {
public $x = "";
public $y = new ErrorVO();
public $w = new array();
}
, 예.
class User
{
public $x = "";
public $y = null;
public $w = array();
public function __construct()
{
$this->y = new ErrorVO();
}
}
편집 KingCrunch 좋은 지적을했다 : 당신은하지 하드 코드 의존성을해야한다. 개체를 개체에 주입해야합니다 (Inversion of Control (IoC)).
class User
{
public $x = "";
public $y = null;
public $w = array();
public function __construct(ErrorVO $y)
{
$this->y = $y;
}
}
new User(new ErrorVD());
당신은 속성 선언에서 선언 할 수는 없지만, 당신은 array()
는 new
키워드없이 public $w
에서 인스턴스화 할 수 __construct()
생성자에서 그것들을 초기화 할 수 있습니다 public $w = array();
public function __construct()
{
$this->y = new ErrorVO();
}
예, 그것이 .
class B {
public $b;
}
$my_object = new B();
$my_object->b = (object)array(
'property' => 'test',
);
echo $my_object->b->property; // should also show 'test'
: 인스턴스 후
class A {
public $a;
public function __construct() {
$this->$a = (object)array(
'property' => 'test',
);
}
}
$my_object = new A();
echo $my_object->a->property; // should show 'test'
: 인스턴스화하는 동안
:하지만이 예를 들어, 이상 (생성자) 클래스 인스턴스화하는 동안 수행 또는 수
생성자 또는 다른 메서드 외부의 클래스 정의에서 직접 개체를 할당 할 수 없습니다. 스칼라 (예. 정수, 문자열 등). 주입이 검증 클래스를 유지하고 싶어 ErrorVO
-implementation 매우 쉽게 교체 할 수 있습니다
class A {
public $a;
public function __construct (ErrorVO $a) {
$this->a = $a;
}
}
: 다른 사람이 이미 모든 것을 설명하는 경우에도 그냥 내 선호하는 솔루션
. 물론 당신은 하나의
class A {
public $a;
public function __construct (ErrorVO $a = null) {
$this->a = is_null($a) ? new ErrorVO : $a;
}
}
마이너 업데이트로 두 솔루션을 결합 할 수 있습니다 : 그 동안 당신은 약간 더 작고 IMO는 의도는 더 명확하게있어이
class A {
public $a;
public function __construct (ErrorVO $a = null) {
$this->a = $a ?: new ErrorVO;
}
}
같은 두 번째 예제를 작성할 수 있습니다. ?:
-operator와 MySQL의 비교 COALESCE
감사합니다. 도움이 될만한 질문입니다.) – Gerep
좋은 예입니다. 매우 도움이됩니다. 고맙습니다. –
감사합니다. 많은 도움이됩니다. =) – Gerep