W katalogu module projektu Laminas, tworzymy nowy katalog o nazwie naszego modułu np. HelloWorld. W utworzonym katalogu tworzymy trzy nowe: config, src, view. Układ katalogów i tworzonych plików w module HelloWorld zaprezentowano na rysunku 1.
Rys. 1. Układ katalogów w projekcie (tworzenie modułu laminas)
W katalogu config tworzymy plik module.config.php, zawartość pliku znajduje się na listingu 1.
Listing 1. Zawartość pliku konfiguracyjnego modułu HelloWorld config/module.config.php
...
/**
* Projekt Laminas
*/
namespace HelloWorld;
use Laminas\ServiceManager\Factory\InvokableFactory;
use Laminas\Router\Http\Segment;
return [
'controllers' => [
'factories' => [
Controller\IndexController::class => InvokableFactory::class,
],
],
'router' => [
'routes' => [
'hello-world' => [
'type' => Segment::class,
'options' => [
'route' => '/hello-world[/:action]',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'index',
],
],
],
],
],
'view_manager' => [
'template_path_stack' => [
'hello-world' => __DIR__ . '/../view',
],
],
];
...
Następnie tworzymy plik Module.php w katalogu src, zawartość pliku na listingu 2.
Listing 2. Zawartość pliku HelloWorld/src/Module.php
...
/**
* Module HelloWorld Laminas kurs
*/
namespace HelloWorld;
use Laminas\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface{
public function getConfig() {
return include __DIR__ . '/../config/module.config.php';
}
}
...
Otwieramy plik composer.json w katalogu głównym projektu i wyszukujemy sekcję autoload, następnie dodajemy fragment kodu widoczny na listingu 3. Po dokonaniu modyfikacji w pliku wprowadzamy w terminalu polecenie composer dump-autoload (rys. 2.).
Listing 3. Fragment pliku projekt-laminas/composer.json
...
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/",
"HelloWorld\\": "module/HelloWorld/src"
}
},
...
Rys. 2. Composer - generowanie plików autoload
Następnie tworzymy katalog Controller, w którym należy utworzyć plik PHP o nazwie IndexController.php (Listing 4.).
Listing 4. Zawartość pliku HelloWorld/src/Controller/IndexController.php
...
/**
* Projekt Laminas
*/
namespace HelloWorld\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class IndexController extends AbstractActionController {
public function indexAction() {
return new ViewModel();
}
}
Teraz zajmiemy się wyświetleniem tekstu HTML, w katalogu view tworzymy katalog hello-world (nazwa naszego modułu), następnie w katalogu utworzonym tworzymy nowy o nazwie index (nazwa dotyczy kontrolera IndexController). Jeśli kontroler miałby nazwę PeterController to katalog musiałby mieć nazwę peter.
W katalog index tworzymy plik index.phtml, który jest przypisywane to akcji, czyli do metody indexAction() znajdującej się w klasie IndexController. Jeśli nazwa akcji byłaby np. peterAction(), plik musiałby mieć nazwę peter.phtml. W pliku index.phtml umieszczamy kod HTML (Listing 5.).
Listing 5. Zawartość pliku HelloWorld/view/hello-world/index/index.phtml
<h1>Hello World!</h1>
Kiedy nasza praca nad modułem HelloWorld zostanie ukończona, dopisujemy go na końcu w pliku projekt-laminas/config/modules.config.php (Listing 6.).
Listing 6. Instalacja modułu HelloWorld, projekt-laminas/config/modules.config.php
/**
* Projekt Laminas
*/
return [
...
'Laminas\I18n',
'Laminas\Router',
'Laminas\Validator',
'Application',
'HelloWorld' // Dodaliśmy moduł HelloWorld Laminas
];
Pierwszy moduł Laminas został zainstalowany. Musimy jeszcze tylko sprawdzić, czy działa prawidłowo. W przeglądarce internetowej wprowadzamy localhost/projekt-laminas/public/hello-world. Jeśli nie występują żadne problemy to znaczy, że moduł został prawidłowo utworzony i zainstalowany (rys. 3.).
Rys. 3. Uruchomienie w przeglądarce Firefox modułu HelloWorld, Laminas kurs
Zaprezentowany moduł w artykule można znaleźć w pliku helloworld-laminas.zip – kodowanie plików tekstowych UTF-8, znaki końca linii Unix. Moduł HelloWorld został utworzony w środowisku programistycznym Eclipse PDT.
Wybrane strony:
Wybrane książki:
- Ramez Elmasri, Shamkant B. Navathe: Wprowadzenie do systemów baz danych. Wydanie VII, Wydawnictwo Helion, 2019.
- Mizanur Rahman: PHP 7. Algorytmy i struktury danych, Wydawnictwo Helion, 2018.
- Matt Zandstra: PHP. Obiekty, wzorce, narzędzia. Wydanie V, Wydawnictwo Helion, 2017.
- Kyle Banker, Peter Bakkum, Shaun Verch, Doug Garrett, Tim Hawkins: MongoDB w akcji, Wydawnictwo Helion, 2016.
- Thomas Wilhelm: Profesjonalne testy penetracyjne. Zbuduj własne środowisko do testów, Wydawnictwo Helion, 2014.
- Bill Karwin: Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych, Wydawnictwo Helion, 2012.