poznámky
Zend Framework 2 (ZF2) je moderní a flexibilní rámec PHP, který pomáhá webovým vývojářům vytvářet webové aplikace různých složitostí. Hlavním sponzorem společnosti Zend Framework je Zend Technologies, díky čemuž je velmi silná a stabilní. Existují dvě hlavní vylepšení této druhé verze oproti ZF1. Za prvé, architektura založená na modulu byla ve výchozím nastavení přijata bez jakéhokoli vylepšení. To se hodí při vývoji velké webové aplikace, která vyžaduje rozklad na moduly. Za druhé, zf2 implementuje všechny funkce, které PHP5. 3+ může nabídnout zejména jmenné prostory. V předchozích verzích je třída řadiče pojmenována následovně:
class IndexController extends Zend_Controller_Action{}
stejná třída je přepsána v ZF2 následovně:
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}
níže jsou uvedeny některé další zajímavé funkce zf2:
- Dependency Injection
- EventManager
- ServiceManager
jednoduchý Hello World
v příkazovém řádku se dostanete do adresáře, ve kterém chcete vytvořit projekt, a zadejte: composer create-project zendframework/skeleton-application helloWorldTest
. Během instalace budete dotázáni, zda chcete minimální instalaci: řekněme ano, prozatím jen testujeme.
pro jednoduchost použijeme vestavěný PHP CLI server. Z příkazového řádku se dostanete do kořenového adresáře vašeho projektu (helloWorldTest
) a poté spusťte: php -S 0.0.0.0:8080 -t public/ public/index.php
. Nyní otevřete webový prohlížeč a přejděte na http://localhost/, měli byste vidět uvítací stránku aplikace Zf2 Skeleton.
pokud tak učiníte, nyní nastavíme novou stránku. V module/Application/config/module.config.php
můžete vidět, že dynamická trasa je již nastavena pro podsložku aplikace:
return , 'application' => ', 'defaults' => , ], ], ], ],
nastavte novou akci „helloWorldAction()
“ v module/Applicaiton/src/Controller/IndexController.php
:
class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }}
nakonec vytvořte soubor zobrazení module/Application/view/application/index/hello-world.phtml
s následujícím obsahem:
<?phpecho "Hello World !";
Nyní přejděte na http://localhost/ aplikace / hello-world a pozdravte ZF2!
jak vytvořit továrnu
když musí být třída vybavena tvrdými závislostmi nejlepší praxí je použít konstruktorový vstřikovací vzor, kde jsou tyto závislosti injektovány pomocí továrny.
předpokládejme, že MyClass
je silně závislá na hodnotě $dependency
, kterou je třeba vyřešit z konfigurace aplikace.
<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }}
pro vložení této závislosti je vytvořena tovární třída. Tato továrna vyřeší závislost z config a vloží hodnotu config na konstrukci třídy a vrátí výsledek:
<?phpnamespace 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; $myClass = new MyClass($dependency); return $myClass; }}
Nyní, když byla vytvořena tovární třída, musí být zaregistrována uvnitř konfigurace správce služeb v konfiguračním souboru modulu module.config.php
pod klíčovými továrnami. Je dobré používat stejné názvy jak pro třídu, tak pro továrnu, takže je snadné je najít ve stromu složek projektu:
<?phpnamespace Application;return array( //... 'service_manager' => ], //...);
alternativně lze k jejich registraci použít konstanty názvu třídy:
<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...);
nyní lze třídu shromáždit u správce služeb pomocí klíče, který jsme použili při registraci továrny pro tuto třídu:
$serviceManager->get('Application\Folder\MyClass');
nebo
$serviceManager->get(MyClass::class);
Správce služeb najde, shromáždí a spustí továrnu a poté vrátí instanci třídy s vloženou závislostí.
instalace nebo nastavení
podrobné pokyny k nastavení nebo instalaci Zend Framework 2. Existují různé způsoby instalace rámce. Níže jsou uvedeny některé z nich:
pomocí Composer-Recommended way
za předpokladu, že composer
je nainstalován na cílovém poli.
Chcete-li nainstalovat aplikaci skeleton MVC, spusťte v terminálu a vytvořte nový projekt zend framework 2 na určeném místě:
php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install
Chcete-li ručně nainstalovat minimální zf2 (Zend MVC + hrst závislostí), spusťte v příkazové řádce:
composer require zendframework/zend-mvc
nebo pro plnohodnotný zf2 (+64 modulů):
composer require zendframework/zendframework`
Vezměte prosím na vědomí, že první možnost spustí instalační program, který vám poskytne plně funkční aplikaci spolu s obvyklou strukturou adresářů aplikací. Další možnosti vám umožní sestavit celou aplikaci od nuly, protože jednoduše poskytuje moduly ZF2, na kterých můžete stavět.
pomocí submodulů Git
spusťte níže uvedený příkaz pro klonování zf2 a jeho závislostí rekurzivně z GitHubu:
git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
HTTP Server Setup
typická webová aplikace vyžaduje běžící službu HTTP poslech vyhrazený port (obvykle :80) předat příchozí požadavky na aplikaci, zpracovat a sloužit výstup (odpověď) zpět.
Poznámka: Můžete také psát konzolové aplikace v Zend Framework 2 bez nutnosti HTTP serveru.
možnost 1-PHP CLI Server
nejjednodušší způsob, jak začít, pokud používáte PHP 5.4 nebo vyšší, je spustit interní PHP cli server v kořenovém adresáři.
přejděte do adresáře projektu a spusťte:
php -S 0.0.0.0:8080 -t public/ public/index.php`.
tím se spustí vestavěný cli-server na portu 8080
a naváže se na všechna síťová rozhraní.
volba 2-vlastní HTTP Server
nakonfigurujte virtualhost na serveru Apache nebo Microsoft IIS nebo Nginx a předejte příchozí HTTP požadavky do aplikace.