저는 최근에 객체를 인스턴스화하고 객체 속성에 일부 데이터를 할당 한 다음에 호출을 수행하는 코드를 작성했습니다. 뭔가를하기위한 방법. 루프에서 코드를 실행할 때
는하지만, 그것이 작동하는 데 실패하고 난 이유를 이해할 수 없었다, 내 예제 코드는 다음과 같습니다 -
컨트롤러 기능 : -
$arrayOfObjects = SomeClass::getItems();
foreach ($arrayOfObjects as $object) {
SomeOtherObject::getInstance($object, time())->run();
}
SomeOtherObject ::의 getInstance() : -
public static function getInstance($object, $timestamp) {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($object, $timestamp);
}
return self::$_instance;
}
private function __contruct($object, $timestamp) {
$this->_theObjectPassed = $object;
$this->_theTimestampPassed = $timestamp;
}
SomeOtherObject의 run 메소드가 예상 한대로 작동하지 않는다는 것이 나를 당혹스럽게 만들었습니다. 루프 내에서 디버깅을 추가 할 때, 즉 $ 객체에 getName() 메소드를 출력하면 루프의 각 항목에 대해 동일한 항목이 생깁니다. 나는 (의 getInstance()를 대신)는 일 다음에 객체를 생성하는 방식을 변경하는 경우
: -
$someOtherObject = new SomeOtherObject($object, time());
$someOtherObject->run();
내가 추측하고있어 그 길을 함께 할 수있는 뭔가가 getInstance 메소드의 작품 그것은 어떻게 체크하고 있는가? 그러나 누군가가 그것을 설명 할 수 있는지 궁금해했다.
감사합니다.
SomeOtherObject ::의 getInstance() 귀하의 예제에서 싱글 생성 방법과 같은 역할을합니다. $ _instance는'getInstance()'의 첫 번째 호출 이후 한 번만 생성됩니다. 다음 호출에서 항상 한 번 생성 된 동일한 객체에 대한 참조를 반환합니다. 이게 문제 야? (내가 올바른 질문을 이해할 수 있는지 확실하지 않음) – hek2mgl