2017-04-21 11 views
0

기본적으로 Composer 자동 로더 (타사 라이브러리 로딩 용)를 사용하고 싶지만 Zend 1.12에서 자동 로딩을위한 내장 메커니즘을 계속 사용하고 싶습니다.Zend 1.12에서 Composer 자동 로더 (외부 라이브러리로드 용)를 사용합니까?

코드 : 또한

<?php // File path: index.php 

// ... 

$composerAutoloaderPaths = array(
    '../vendor/autoload.php', 
    '../../common/vendor/autoload.php' // store common libraries used by multiple projects, currently that's working by adding the directory in set_include_path() 
); 

foreach($composerAutoloaderPaths as $composerAutoloaderPath) 
{ 
    if(file_exists($composerAutoloaderPath)) 
    { 
     require_once $composerAutoloaderPath; 
    } 
    else 
    { 
     // handle the error gracefully 
    } 
} 

// ... 

, 나는이 같은 Zend_Loader_Autoloader을 사용하고 있습니다 :

<?php // File path: Bootstrap.php 

// ... 

$autoloader = Zend_Loader_Autoloader::getInstance(); 

$autoloader->registerNamespace('Plugin_'); 
$autoloader->registerNamespace('Helper_'); 
// etc. 

// ... 

이 같은 작곡가와 젠드 자동 로더를 사용하는 방법에 대한 걱정 뭔가가 있나요? 그런 bootstrap.php에서

답변

2

나는 종종이 문제가 발생하며 실제 문제는 아니라고 생각합니다.

가장 좋은 방법은 IMF가 ZF2/3에서 작성한 것처럼 작곡가 오토로더를 public/index.php에 포함시키는 것입니다. 이것은 나머지 자동 로딩에 관한 사항을 변경하지 않습니다 : https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/index.php#L21

주의 : 응용 프로그램에서 다른 입력 지점 (예 : cron 스크립트)을 사용했다면 동일한 줄을 추가해야합니다 (기본적으로 각각 응용 프로그램의 진입 점). 당신이 phpmd의 규칙 보면

또한

은, 하나는이 메시지를 제공합니다

, 새로운 심볼 (클래스, 함수, 상수 등)을 선언하고 다른 부작용을 일으킬 안 파일이나 부작용이있는 로직을 실행해야하지만 둘 다 수행하면 안됩니다.

따라서, 부트 스트랩 공급 업체 자동 로더의 포함 선언하는 것은 불법 행위로 간주 될 수있다 (적어도이 규칙과 자신을 :) 썼다 누구든지간에 공유 된 의견 것 같다).

1

당신이 할 수있는 자동로드 공급 업체 : <?php // File path: Bootstrap.php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { /** * Inits Vendor */ protected function _initVendor() { require_once APPLICATION_PATH . '/../vendor/autoload.php'; // require_once APPLICATION_PATH . '/new/path/autoload.php'; } ... autoload whatever you want with Zend 1 ... }

나는 디렉토리가 존재하는 경우 file_exists가 true를 돌려 때문에 file_exists() 대신에) (is_file 사용하도록 조언해야하지만, 경우에 .php 파일이 필요하지 존재합니다

1

저는 ZF1과 함께 당신의 회복력에 감탄해야합니다, 우리 모두는 10 년 전에 거기에있었습니다. Zend Framework 1.x는 클래스 내에서 require_once로 가득 차 있습니다. 언제든지 언제든지 다른 파일을 Bootstrap.php 파일에 require_once 할 수 있습니다.