Looking for zend-framework2 Answers? Try Ask4KnowledgeBase
Looking for zend-framework2 Keywords? Try Ask4Keywords

zend-framework2zend-framework2 시작하기


비고

Zend Framework 2 (ZF2)는 웹 개발자가 다양한 복잡성의 웹 애플리케이션을 개발할 수있게 해주는 현대적이고 유연한 PHP 프레임 워크입니다. Zend Framework 회사의 주요 스폰서는 매우 강력하고 안정적인 Zend Technologies 입니다. 이 두 번째 버전에는 ZF1에 비해 두 가지 주요 개선 사항이 있습니다. 첫째, 모듈 기반 아키텍처가 조정없이 기본적으로 채택되었습니다. 모듈에 대한 분해가 필요한 큰 크기의 웹 응용 프로그램을 개발할 때 유용합니다. 두 번째로, ZF2는 PHP5.3 +에서 특히 네임 스페이스를 제공 할 수있는 모든 기능을 구현합니다. 이전 버전에서 컨트롤러 클래스의 이름은 다음과 같습니다.

class IndexController extends Zend_Controller_Action
{

}

이 같은 클래스는 다음과 같이 ZF2에서 다시 작성됩니다.

namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;

class IndexController extends AbstractActionController
{

}

ZF2의 다른 흥미로운 특징은 다음과 같습니다.

  • 의존성 주입
  • 이벤트 관리자
  • 서비스 매니저

간단한 Hello World

명령 행에서 프로젝트를 생성하고자하는 디렉토리로 이동 한 다음, composer create-project zendframework/skeleton-application helloWorldTest . 설치하는 동안 최소 설치를 원할 지 여부를 묻는 메시지가 나타납니다. 잠시 후 예를 들어 보겠습니다. 테스트하는 중입니다.

간단히하기 위해 내장 된 PHP CLI 서버를 사용합니다. 명령 줄에서 프로젝트의 루트 디렉토리 ( helloWorldTest )에 helloWorldTest 다음을 실행하십시오 : php -S 0.0.0.0:8080 -t public/ public/index.php . 이제 웹 브라우저를 열고 http : // localhost / 로 가면 ZF2 스켈레톤 애플리케이션의 시작 페이지가 표시됩니다.

그렇게하면 새 페이지를 설정합니다. module/Application/config/module.config.php 에서 동적 경로가 응용 프로그램 하위 폴더에 대해 이미 설정되어 있는지 확인할 수 있습니다.

return [
    'router' => [
        'routes' => [
            'home' => [
                ...
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application[/:action]',
                    'defaults' => [
                        'controller'    => Controller\IndexController::class,
                        'action'        => 'index',
                    ],
                ],
            ],
        ],
    ],
 

module/Applicaiton/src/Controller/IndexController.php helloWorldAction() 액션을 module/Applicaiton/src/Controller/IndexController.php 에서 설정하십시오 :

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        ...
    }
    
    public function helloWorldAction()
    {
        return new ViewModel();
    }
}
 

마지막으로 다음 내용으로 뷰 파일 module/Application/view/application/index/hello-world.phtmlmodule/Application/view/application/index/hello-world.phtml .

<?php
echo "Hello World !";
 

이제 http : // localhost / application / hello-world로 이동 하여 ZF2에 대해 인사하십시오!

공장을 만드는 방법

클래스가 딱딱한 의존성을 제공받을 필요가있을 때 모범 사례는 팩터를 사용하여 그 의존성이 주입되는 생성자 주입 패턴을 사용하는 것입니다.

MyClass 가 응용 프로그램 구성에서 해결해야하는 값 $dependency 에 크게 의존한다고 가정합시다.

<?php
namespace Application\Folder;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class MyClass
{
    protected $dependency;

    public function __construct($dependency)
    { 
        $this->dependency = $dependency;
    }
}
 

이 종속성을 주입하기 위해 팩토리 클래스가 작성됩니다. 이 팩토리는 config로부터 의존성을 해결하고 클래스의 생성에 config 값을 주입하고 결과를 반환합니다 :

<?php
namespace Application\Factory;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class MyClassFactory implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator)
    { 
        $config = $servicelocator->get('Config');
        $dependency = $config['dependency'];
        $myClass = new MyClass($dependency);
        return $myClass;
    }
}
 

팩토리 클래스가 생성되었으므로 핵심 팩토리 아래의 모듈 구성 파일 module.config.php 에있는 서비스 관리자 구성 파일에 등록해야합니다. 클래스와 팩토리 모두에 동일한 이름을 사용하면 프로젝트 폴더 트리에서 쉽게 찾을 수 있습니다.

<?php

namespace Application;

return array(
    //...
    'service_manager' => [
        'factories' => [
            'Application\Folder\MyClass' => 'Application\Factory\MyClassFactory'
        ]
    ],
    //...
);
 

또는 클래스 이름 상수를 사용하여 클래스 이름을 등록 할 수 있습니다.

<?php

namespace Application;

use Application\Folder\MyClass;
use Application\Factory\MyClassFactory;

return array(
    //...
    'service_manager' => [
        'factories' => [
            MyClass::class => MyClassFactory::class'
        ]
    ],
    //...
);
 

이제 해당 클래스의 팩토리를 등록 할 때 사용한 키를 사용하여 서비스 관리자에서 클래스를 수집 할 수 있습니다.

 $serviceManager->get('Application\Folder\MyClass');
 

또는

 $serviceManager->get(MyClass::class);
 

서비스 관리자는 팩토리를 찾아서 수집하고 실행 한 다음 의존성이 삽입 된 클래스 인스턴스를 반환합니다.

설치 또는 설정

젠드 프레임 워크 2 설치 또는 설치에 대한 자세한 지침. 프레임 워크를 설치하는 데는 여러 가지 방법이 있습니다. 아래는 그 중 일부입니다.

작곡가 사용 - 추천 방법

composer 가 대상 상자에 설치 되었다고 가정합니다.

스켈레톤 MVC 애플리케이션을 설치하려면 터미널에서 실행하여 지정된 위치에 새 zend 프레임 워크 2 프로젝트를 만듭니다.

php composer.phar create-project -sdev \
    --repository-url="https://packages.zendframework.com" \
    zendframework/skeleton-application path/to/install
 

최소한의 ZF2 (Zend MVC +에 대한 의존성)를 수동으로 설치하려면 명령 행에서 다음을 실행하십시오.

composer require zendframework/zend-mvc
 

또는 본격적인 개발을 위해 d ZF2 (+64 모듈) :

composer require zendframework/zendframework`
 

첫 번째 옵션은 일반적인 응용 프로그램 디렉토리 구조와 함께 완전한 기능을 갖춘 응용 프로그램을 제공하는 설치 프로그램을 실행합니다. 다른 옵션은 ZF2 모듈을 제공하기 때문에 처음부터 전체 애플리케이션을 구축 할 수 있습니다.

힘내 서브 모듈 사용하기

아래 명령을 실행하여 zf2를 복제하면 github에서 재귀 적으로 종속됩니다.

git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
 

HTTP 서버 설정

일반적인 웹 응용 프로그램은 들어오는 요청을 응용 프로그램으로 전달하고 출력 (응답)을 처리하고 처리하기 위해 전용 포트 (일반적으로 80)를 수신하는 HTTP 서비스를 실행해야합니다.

참고 : HTTP 서버 없이도 Zend Framework 2에서 콘솔 인식 애플리케이션을 작성할 수 있습니다.

옵션 1 - PHP CLI 서버

PHP 5.4 이상을 사용하는 경우 시작하는 가장 간단한 방법은 루트 디렉토리에서 내부 PHP CLI 서버를 시작하는 것입니다.

프로젝트 디렉토리로 이동하여 다음을 실행하십시오.

php -S 0.0.0.0:8080 -t public/ public/index.php`.
 

이렇게하면 포트 8080 에서 내장 cli- 서버가 시작되고 모든 네트워크 인터페이스에 바인딩됩니다.

옵션 2 - 사용자 정의 HTTP 서버

Apache 또는 Microsoft IIS Server 또는 Nginx에서 가상 호스트를 구성하고 들어오는 HTTP 요청을 응용 프로그램에 전달하십시오.