Bemerkninger
Zend Framework 2 (ZF2) er et moderne OG fleksibelt PHP rammeverk som hjelper webutviklere å bygge webapplikasjoner av forskjellige kompleksiteter. Hovedsponsoren Til selskapet Zend Framework Er Zend Technologies, noe som gjør Den veldig sterk og stabil. Det er to store forbedringer av denne andre versjonen over ZF1. Først har en modulbasert arkitektur blitt vedtatt som standard uten noen tweak. Dette kommer hendig når developping en stor størrelse web-applikasjon som krever en nedbrytning til moduler. For DET andre implementerer ZF2 alle funksjonene PHP5.3+ kan tilby spesielt navnerom. I tidligere versjoner er en kontrollerklasse navngitt som følger:
class IndexController extends Zend_Controller_Action{}
Denne samme klassen er omskrevet I ZF2 som følger:
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}
følgende er noen andre spennende funksjoner I ZF2:
- Avhengighet Injeksjon
- EventManager
- ServiceManager
En Enkel Hello World
i kommandolinjen, få i katalogen du vil opprette prosjektet i, skriv deretter: composer create-project zendframework/skeleton-application helloWorldTest
. Under installasjonen vil du bli spurt om du vil ha en minimal installasjon: La oss si ja for øyeblikket, vi tester bare.
for enkelhets skyld vil vi bruke den innebygde PHP cli-serveren. Fra kommandolinjen, kom deg i rotkatalogen til prosjektet ditt (helloWorldTest
), og kjør deretter: php -S 0.0.0.0:8080 -t public/ public/index.php
. Nå åpner du nettleseren din og går til http://localhost/, du bør se velkomstsiden TIL ZF2 Skeleton-Programmet.
hvis du gjør det, vil vi nå sette opp en ny side. I module/Application/config/module.config.php
kan du se at en dynamisk rute allerede er konfigurert for applikasjonsundermappen:
return , 'application' => ', 'defaults' => , ], ], ], ],
Sett en ny handling «helloWorldAction()
» i module/Applicaiton/src/Controller/IndexController.php
:
class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }}
til Slutt oppretter du visningsfilen module/Application/view/application/index/hello-world.phtml
med følgende innhold:
<?phpecho "Hello World !";
nå går du til http://localhost/ søknad/hei-verden, og si hei TIL ZF2 !
hvordan lage en fabrikk
når en klasse må være utstyrt med harde avhengigheter beste praksis er å bruke en konstruktør injeksjon mønster der disse avhengighetene er injisert ved hjelp av en fabrikk.
la oss anta at MyClass
er vanskelig avhengig av en verdi $dependency
som må løses fra programkonfigurasjonen.
<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }}
en fabrikkklasse opprettes for å injisere denne avhengigheten. Denne fabrikken vil løse avhengigheten fra config og injisere config verdi på bygging av klassen og returnere 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; }}
nå som fabrikkklassen er opprettet, må den registreres i service manager config i modul config-filen module.config.php
under nøkkelfabrikkene. Det er god praksis å bruke de samme navnene for både klassen og fabrikken, så det er lett å finne dem i prosjektmappetreet:
<?phpnamespace Application;return array( //... 'service_manager' => ], //...);
Alternativt kan klassen navn konstanter brukes til å registrere dem:
<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...);
nå kan klassen hentes på serviceleder ved hjelp av nøkkelen som vi brukte når du registrerte fabrikken for den klassen:
$serviceManager->get('Application\Folder\MyClass');
eller
$serviceManager->get(MyClass::class);
serviceadministratoren finner, samler inn og kjører fabrikken, og returnerer deretter klasseforekomsten med avhengigheten injisert.
Installasjon Eller Oppsett
Detaljerte instruksjoner om hvordan Du får Zend Framework 2 satt opp eller installert. Det finnes ulike måter å installere rammen på. Nedenfor er noen av dem:
Ved Hjelp Av Composer-Recommended way
Forutsatt composer
er installert på målboksen.
for å installere et skjelett MVC-program, kjør i terminalen din for å opprette et nytt zend framework 2-prosjekt på angitt sted:
php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install
for å installere en minimal ZF2 manuelt (Zend MVC + sin håndfull avhengigheter), kjør i kommandolinjen:
composer require zendframework/zend-mvc
eller for en fullverdig ZF2(+ 64 moduler):
composer require zendframework/zendframework`
Vær oppmerksom på at det første alternativet kjører et installasjonsprogram som vil gi deg et fullt fungerende program sammen med den vanlige programkatalogstrukturen. Andre alternativer vil la deg bygge hele programmet fra bunnen av som det bare gir ZF2 moduler å bygge på.
Bruke Git-Submoduler
Kjør kommandoen nedenfor for å klone zf2, og det er avhengigheter rekursivt fra Github:
git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
HTTP Server Setup
en typisk webapplikasjon krever at EN KJØRER EN HTTP-tjeneste som lytter til en dedikert port (vanligvis: 80) for å sende innkommende forespørsler til applikasjonen, behandle og betjene utdataene (svaret) tilbake.
Notat: Du kan ogsa skrive konsollbevisste programmer I Zend Framework 2 uten a trenge EN HTTP-server.
ALTERNATIV 1-PHP Cli Server
den enkleste måten å komme i gang hvis DU bruker PHP 5.4 eller høyere, er å starte den interne PHP cli-serveren i rotkatalogen.
Gå til prosjektkatalogen og kjør:
php -S 0.0.0.0:8080 -t public/ public/index.php`.
Dette vil starte den innebygde cli-serveren på port 8080
, og binde den til alle nettverksgrensesnitt.
ALTERNATIV 2 – en egendefinert HTTP-Server
Konfigurer en virtualhost På Apache Eller Microsoft Iis-Server eller Nginx og send innkommende HTTP-forespørsler til programmet.