젠드 프레임 워크에서 컨트롤러 내에 사용 된 $ this 객체에 기능을 추가 할 수 있습니까?
별도의 폴더에 저장된 클래스 파일로 정의 된 API를 만들려고합니다. 그래서 갈 수있어서 좋겠다 :
$userDetails = $this->api->user()->getDetails();
이것은 가능 하냐?
젠드 프레임 워크에서 컨트롤러 내에 사용 된 $ this 객체에 기능을 추가 할 수 있습니까?
별도의 폴더에 저장된 클래스 파일로 정의 된 API를 만들려고합니다. 그래서 갈 수있어서 좋겠다 :
$userDetails = $this->api->user()->getDetails();
이것은 가능 하냐?
이것은 객체 인스턴스에 대한 참조 일 뿐이므로 문제의 클래스에 메서드와 속성을 추가하기 만하면됩니다. 예를 들면 다음과 같습니다.
class MyController extends Zend_Controller_Action
{
protected $api = null;
public function init()
{
$this->api = new ApiClass();
}
public function indexAction()
{
$this->api->user()->details();
}
}
물론 이것은 가장 좋은 방법입니다. 아마 부트 스트랩 자원으로 그 경우에 youd가있는 API를 둘 것입니다 수행
class MyController extends Zend_Controller_Action
{
public function indexAction()
{
$this->getApi()->user()->details();
}
public function getApi()
{
return $this->getInvokeArg('bootstrap')->api;
}
}
는 자신의 클래스를 저장할 수 있습니다 라이브러리에 새 폴더를 만듭니다. 예를 들면 :
includePaths.library = APPLICATION_PATH "../../library"
:
class IndexController extends Sjwdavies_Controller_Action
{
public $api;
}
것은 당신의 application.ini에서 라이브러리 경로를 포함해야합니다 : Sjwdavies/Controller/Action.php
class Sjwdavies_Controller_Action extends Zend_Controller_Action
{
public $api;
}
귀하의 컨트롤러는 이제이 클래스를 확장해야합니다 : Sjwdavies
새 파일 만들기
감사합니다. 아마도 내 질문에 가장 잘 맞는 답변 일 것입니다. 부트 스트랩 리소스를 만들어서 기쁩니다.하지만 클래스 오토로더를 어떻게 만들 수 있습니까? 그래서 모든 클래스와 메소드를 압박하는 api.php 파일을 만들 필요없이 $ this-> api-> className-> Method를 호출 할 수 있습니까? 확실하게 영리하고 자동화 된 방법이 있어야합니까? – Sjwdavies
API 클래스에서 자신의 인프라를 차갑게 만들거나 oyu가 ['Zend_Loader_PluginLoader'] (http://framework.zend.com/manual/en/zend.loader.pluginloader.html)를 활용할 수 있지만 여전히 필요합니다. API가 사용할 모든 클래스를 작성하십시오. 이것은 정말로이 질문과 완전히 별개로 새로운 질문이 될 것입니다. – prodigitalson
감사합니다. 나는 당신이 포함하는 것 이외의 어떤 예들에 대한 어떤 링크를 알지 못한다고 생각합니까? 모든 클래스는 이미/application/api 폴더에 생성되어 있습니다. – Sjwdavies