라이브러리 Shanty_Mongo
은 네임 스페이스를 사용하지 않고 "오래된"밑줄로 구분 된 라이브러리입니다. ZF2에서 스타일은 PSR-0 표준과 동일하지만 네임 스페이스가 있습니다 (따라서 Shanty_Mongo
은 Shanty\Mongo
입니다). 그러나 예를 들어 클래스 맵을 사용하여 이러한 오래된 스타일 벌금을로드 할 수 있습니다. 그런 다음 ZF2 프로젝트에서 밑줄로 구분 된 클래스를 사용할 수 있습니다.
이 라이브러리의 모듈을 만들고 해당 모듈을 ./vendor
("제 3 자 기능을 제공하는 모듈")에 넣는 것이 좋습니다. 이 모듈에서는 다음과 같은 디렉토리 구조를 만들 수 있습니다 (I 모듈의 이름 ShantyMongo 가정) :
./vendor/ShantyMongo/
library/
Module.php
autoload_classmap.php
autoload_function.php
autoload_register.php
라이브러리는 ShantyMongo의 자식 저장소에 서브 모듈이다. 파일 autoload_classmap.php
은 ZF2 저장소의 bin
디렉토리 안에있는 PHP 스크립트 classmap_generator.php
에 의해 생성 된 클래스 맵입니다. 그런 다음 autoload_function.php이 같은 간단한 될 수 있습니다
<?php
return function ($class) {
static $map;
if (!$map) {
$map = include __DIR__ . '/autoload_classmap.php';
}
if (!isset($map[$class])) {
return false;
}
return include $map[$class];
};
그리고이 같은 autoload_register.php :
<?php
spl_autoload_register(include __DIR__ . '/autoload_function.php');
이하자하려면 ZF2 응용 프로그램을 사용하면, 당신은을 채우기 위해이 모듈이 필요한 것을 알고있다 module.php는 ShantyMongo\Module
클래스입니다. 이런 식으로 뭔가 충분합니다 :
<?php
namespace ShantyMongo;
use Zend\Module\Consumer\AutoloaderProvider;
class Module implements AutoloaderProvider
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
)
);
}
}
당신이 지금 ZF2 안쪽이 제 3 자 라이브러리의 자동 로더를 설정 한 application.config.php
에 모듈 어레이에 "ShantyMongo"를 추가합니다. 다음과 같이 다음 모델을 사용할 수 있습니다 ShantyMongo 네임 스페이스를 사용하지 않기 때문에
<?php
namespace Dummy\Model;
class Dummy extends Shanty_Mongo_Document {
public function setConnections ($connections) {
Shanty_Mongo::addConnections($connections);
}
}
, 당신은 더 이상이 사용하는 문이 없습니다.
Shanty \ Mongo \ Document를 Document로 사용하고 Class Dummy extends Document를 사용해보십시오. 나는 그 네임 스페이스와 너무 확고하지 않다. 그러나 나는 그것을 올바르게 이해하면 제대로 작동해야한다. – Sam
불행히도 그것은 작동하지 않았다. 사실 Shanty_Mongo는 젠드 (Zend)가 라이브러리에 대해 시행하는 디렉토리 네이밍 변환을 따르지만 네임 스페이스를 지원하지 않기 때문에 작동하지 않는다고 생각합니다. 정확히 어떻게 작동하는지 알아 내려고 노력 중입니다. (http://packages.zendframework.com/docs/latest/manual/en/zend.loader.html#zend.loader.load) – mobius