anmärkningar
Zend Framework 2 (ZF2) är ett modernt och flexibelt PHP-ramverk som hjälper webbutvecklare att bygga webbapplikationer med olika komplexiteter. Huvudsponsor för företaget Zend Framework är Zend Technologies, vilket gör det mycket starkt och stabilt. Det finns två stora förbättringar av denna andra version över ZF1. Först har en modulbaserad arkitektur antagits som standard utan någon tweak. Detta kommer praktiskt när utveckla en stor storlek webbapplikation som kräver en nedbrytning till moduler. För det andra implementerar ZF2 alla funktioner PHP5.3+ kan erbjuda särskilt namnområdena. I tidigare versioner heter en kontrollerklass enligt följande:
class IndexController extends Zend_Controller_Action{}
samma klass skrivs om i ZF2 enligt följande:
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}
följande är några andra spännande funktioner i ZF2:
- Beroendeinjektion
- EventManager
- ServiceManager
en enkel Hello World
i kommandoraden, få i katalogen du vill skapa projektet i, skriv sedan: composer create-project zendframework/skeleton-application helloWorldTest
. Under installationen kommer du att bli frågad om du vill ha en minimal installation: låt oss säga ja för tillfället, vi testar bara.
för enkelhetens skull kommer vi att använda den inbyggda PHP CLI-servern. Från kommandoraden får du dig själv i rotkatalogen för ditt projekt (helloWorldTest
) och kör sedan : php -S 0.0.0.0:8080 -t public/ public/index.php
. Öppna nu din webbläsare och gå till http://localhost/, du bör se välkomstsidan för ZF2 Skeleton-applikationen.
om du gör det kommer vi nu att ställa in en ny sida. I module/Application/config/module.config.php
kan du se att en dynamisk rutt redan är inställd för applikationsundermappen:
return , 'application' => ', 'defaults' => , ], ], ], ],
Ställ in en ny åtgärd ”helloWorldAction()
” i module/Applicaiton/src/Controller/IndexController.php
:
class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }}
slutligen skapa vyfilen module/Application/view/application/index/hello-world.phtml
med följande innehåll:
<?phpecho "Hello World !";
gå nu till http://localhost/ application/hello-world och säg hej till ZF2 !
hur man skapar en fabrik
när en klass måste förses med hårda beroenden bästa praxis är att använda ett konstruktörinjektionsmönster där dessa beroenden injiceras med en fabrik.
låt oss anta att MyClass
är hårt beroende av ett värde $dependency
som måste lösas från applikationskonfig.
<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }}
för att injicera detta beroende skapas en fabriksklass. Denna fabrik kommer att lösa beroendet från config och injicera config värdet på konstruktion av klassen och returnera resultatet:
<?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; }}
nu när fabriksklassen har skapats måste den registreras i service manager config i modulkonfigurationsfilen module.config.php
under nyckelfabrikerna. Det är bra att använda samma namn för både klassen och fabriken så det är lätt att hitta dem i projektmappträdet:
<?phpnamespace Application;return array( //... 'service_manager' => ], //...);
Alternativt kan klassnamnskonstanterna användas för att registrera dem:
<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...);
nu kan klassen samlas in hos servicechefen med hjälp av nyckeln som vi använde när vi registrerade fabriken för den klassen:
$serviceManager->get('Application\Folder\MyClass');
eller
$serviceManager->get(MyClass::class);
servicehanteraren hittar, samlar in och kör fabriken och returnerar sedan din klassinstans med beroendet injicerat.
Installation eller installation
detaljerade instruktioner om hur du konfigurerar eller installerar Zend Framework 2. Det finns olika sätt att installera ramverket. Nedan följer några av dem:
använda Composer – Recommended way
förutsatt att composer
är installerat på målrutan.
för att installera ett skelett MVC-program, kör i din terminal för att skapa ett nytt zend framework 2-projekt på angiven plats:
php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install
för att manuellt installera en minimal ZF2 (Zend MVC + dess handfull beroenden), kör i kommandoraden:
composer require zendframework/zend-mvc
eller för en fullfjädrad ZF2 (+64 moduler):
composer require zendframework/zendframework`
Observera att det första alternativet Kör ett installationsprogram som ger dig en fullt fungerande applikation tillsammans med den vanliga programkatalogstrukturen. Andra alternativ låter dig bygga hela applikationen från början eftersom det helt enkelt ger ZF2-moduler att bygga på.
använda Git Submodules
Kör kommandot nedan för att klona zf2 och det är beroenden rekursivt från Github:
git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
HTTP Server Setup
en typisk webbapplikation kräver en kör en HTTP-tjänst lyssnar en dedikerad port (vanligtvis :80) för att passera inkommande förfrågningar till ansökan, bearbeta och servera utdata (svar) tillbaka.
notera: Du kan också skriva konsolmedvetna applikationer i Zend Framework 2 utan att behöva en HTTP-server.
alternativ 1-PHP CLI Server
det enklaste sättet att komma igång om du använder PHP 5.4 eller högre är att starta den interna PHP cli-servern i rotkatalogen.
gå till projektkatalogen och kör:
php -S 0.0.0.0:8080 -t public/ public/index.php`.
detta startar den inbyggda cli-servern på port 8080
och binder den till alla nätverksgränssnitt.
alternativ 2-en anpassad HTTP-Server
konfigurera en virtualhost på Apache eller Microsoft IIS-Server eller Nginx och skicka inkommande HTTP-förfrågningar till applikationen.