opmerkingen
Zend Framework 2 (ZF2) is een modern en flexibel PHP framework dat webontwikkelaars helpt om webapplicaties van verschillende complexiteit te bouwen. De belangrijkste sponsor van Zend Framework is Zend Technologies, waardoor het zeer sterk en stabiel is. Er zijn twee belangrijke verbeteringen van deze tweede versie boven ZF1. Ten eerste, een module-gebaseerde architectuur is standaard aangenomen zonder enige tweak. Dit komt handig bij het ontwikkelen van een groot formaat web applicatie die een ontleding aan modules vereist. Ten tweede, ZF2 implementeert alle functies PHP5. 3 + kan bieden met name de naamruimten. In de vorige versies wordt een controller klasse als volgt genoemd:
class IndexController extends Zend_Controller_Action{}
deze zelfde klasse is als volgt herschreven in ZF2:
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}
de volgende zijn enkele andere spannende functies van ZF2:
- Dependency Injection
- EventManager
- ServiceManager
een eenvoudige Hello World
in uw opdrachtregel, ga naar de map waarin u het project wilt maken en typ: composer create-project zendframework/skeleton-application helloWorldTest
. Tijdens de installatie wordt u gevraagd of u een minimale installatie wilt: laten we zeggen ja voor het moment, we zijn gewoon testen.
omwille van de eenvoud zullen we de ingebouwde PHP CLI server gebruiken. Ga vanaf de commandoregel naar de rootdirectory van je project (helloWorldTest
) en voer dan : php -S 0.0.0.0:8080 -t public/ public/index.php
uit . Open nu je webbrowser en ga naar http://localhost/, je zou de welkomstpagina van de ZF2 Skeleton applicatie moeten zien.
Als u dit doet, zullen we nu een nieuwe pagina instellen. In module/Application/config/module.config.php
kunt u zien dat er al een dynamische route is ingesteld voor de submap van de toepassing:
return , 'application' => ', 'defaults' => , ], ], ], ],
nieuwe actie “helloWorldAction()
” instellen in module/Applicaiton/src/Controller/IndexController.php
:
class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }}
maak Tot slot het weergavebestand module/Application/view/application/index/hello-world.phtml
met de volgende inhoud:
<?phpecho "Hello World !";
ga nu naar http://localhost/application / hello-world en zeg hallo tegen ZF2 !
Hoe maak je een fabriek
wanneer een klasse moet worden voorzien van harde afhankelijkheden best practice is om een constructor injectie patroon te gebruiken waar deze afhankelijkheden worden geïnjecteerd met behulp van een fabriek.
laten we aannemen dat MyClass
hard afhankelijk is van een waarde $dependency
die opgelost moet worden vanuit de applicatie configuratie.
<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }}
om deze afhankelijkheid te injecteren wordt een fabrieksklasse aangemaakt. Deze fabriek zal de afhankelijkheid van de config oplossen en de config waarde injecteren bij de bouw van de klasse en het resultaat retourneren:
<?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 de factory class is aangemaakt, moet deze worden geregistreerd in de service manager configuratie in het module configuratiebestand module.config.php
onder de key factories. Het is een goede gewoonte om dezelfde namen te gebruiken voor zowel de klasse als de fabriek, dus het is gemakkelijk om ze te vinden in de projectmap boom:
<?phpnamespace Application;return array( //... 'service_manager' => ], //...);
als alternatief kunnen de klassenaamconstanten worden gebruikt om ze te registreren:
<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...);
nu kan de klasse worden verzameld bij de service manager met behulp van de sleutel die we hebben gebruikt bij het registreren van de fabriek voor die klasse:
$serviceManager->get('Application\Folder\MyClass');
of
$serviceManager->get(MyClass::class);
de service manager zal de factory vinden, verzamelen en uitvoeren en dan geeft het uw klasse-instantie terug met de geïnjecteerde afhankelijkheid.
installatie of installatie
gedetailleerde instructies voor het instellen of installeren van Zend Framework 2. Er zijn verschillende manieren om het framework te installeren. Hieronder zijn er een paar:
gebruikmakend van de opsteller aanbevolen weg
aangenomen dat composer
op het doelvak is geïnstalleerd.
om Te installeren van een skelet MVC toepassing uitvoeren in de terminal om een nieuwe zend framework 2 project in de opgegeven locatie:
php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install
voor het handmatig installeren van een minimale ZF2 (Zend MVC + zijn enkele van afhankelijkheden), uitgevoerd in de opdracht regel:
composer require zendframework/zend-mvc
of voor een volwaardige ZF2 (+64 modules):
composer require zendframework/zendframework`
Let op: de eerste optie draait een installer die zullen u voorzien van een volledig functionele applicatie, samen met de gebruikelijke toepassing directory-structuur. Met andere opties kunt u de hele applicatie vanaf nul bouwen, omdat het eenvoudig ZF2-modules biedt om op te bouwen.
met Git Submodules
voer het onderstaande commando uit om ZF2 en zijn afhankelijkheden recursief te klonen vanuit Github:
git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
HTTP Server Setup
een typische webtoepassing vereist een HTTP-service die een dedicated poort (meestal :80) draait om inkomende aanvragen door te geven aan de toepassing, de output (response) te verwerken en terug te geven.
Noot: U kunt ook consolebewuste toepassingen schrijven in Zend Framework 2 zonder dat u een HTTP-server hoeft te gebruiken.
optie 1-PHP CLI Server
de eenvoudigste manier om te beginnen als u PHP 5.4 of hoger gebruikt is door de interne PHP cli-server in de root directory te starten.
Ga naar projectmap en voer uit:
php -S 0.0.0.0:8080 -t public/ public/index.php`.
Dit start de ingebouwde cli-server op poort 8080
en bindt deze aan alle netwerkinterfaces.
optie 2 – een aangepaste HTTP-Server
Configureer een virtualhost op een Apache-of Microsoft IIS-Server of Nginx en geef inkomende HTTP-verzoeken door aan de toepassing.