Moduł PnConvertByteToString zawiera Helper przygotowany specjalnie dla widoku. Po instalacji w naszym projekcie, będziemy mogli z niego korzystać we wszystkich naszych modułach. Tworzenie prostego modułu przedstawiliśmy w artykule „Tworzenie modułu HelloWorld w Zend Framework 3”, dlatego pominiemy ten temat. Podstawy dotyczące Zend Framework 3 znajdziemy w dokumentacji i książce Zend Framework 3. Poradnik programisty.
Moduł zawiera cztery pliki:
- config/module.config.php (Listing 1)
- src/Factory/View/Helper/PnConvertByteToStringFactory.php (Listing 2)
- src/View/Helper/PnConvertByteToString.php (Listing 3)
- src/Module.php (Listing 4)
Helper pod jaką nazwą ma być dostępny w naszych widokach ustawiamy w pliku module.config.php (Listing 1).
Listing 1. Zawartość pliku config/module.config.php
<?php
// Zend Framework 3 kurs (helper module zf3)
return [
'view_helpers' => [
'factories' => [
'pnConvertByteToString' => PnConvertByteToString\Factory\View\Helper\PnConvertByteToStringFactory::class
],
],
];
Listing 2. Zawartość pliku src/Factory/View/Helper/PnConvertByteToStringFactory.php
<?php
// Zend Framework 3 kurs
namespace PnConvertByteToString\Factory\View\Helper;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
use PnConvertByteToString\View\Helper\PnConvertByteToString;
class PnConvertByteToStringFactory implements FactoryInterface {
public function __invoke(ContainerInterface $container, $requestedName, array $options = null) {
return new PnConvertByteToString();
}
}
Jeśli helper ma przyjmować parametry należy w klasie PnConvertByteToString, dodać parametry wymagane do funkcji __invoke(), która przekazuje na wyjściu informacje przygotowane dla widoku (Listing 3).
Funkcja toByteString() umieszczona w klasie PnConvertByteToString, pochodzi z klasy Zend\Validator\File\Size. Zamienia bajty na przybliżoną wielkość, m.in. kB, MB.
Listing 3. Zawartość pliku src/View/Helper/PnConvertByteToString.php
<?php
// Zend Framework 3 kurs
namespace PnConvertByteToString\View\Helper;
use Zend\View\Helper\AbstractHelper;
class PnConvertByteToString extends AbstractHelper {
public function __invoke($size = null) {
if(is_numeric($size)) {
$size = $this->toByteString($size);
} else {
$size = ' ';
}
return $size;
}
protected function toByteString($size) {
$sizes = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
for ($i = 0; $size >= 1024 && $i < 9; $i++) {
$size /= 1024;
}
return round($size, 2) . $sizes[$i];
}
}
Listing 4. Zawartość pliku src/Module.php
<?php
// Jak utworzyć helper Zend Framework 3
namespace PnConvertByteToString;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface {
public function getConfig() {
return include __DIR__ . '/../config/module.config.php';
}
}
Przykład użycia modułu PnConvertByteToString zaprezentowano na listingu 5, wynik działania przedstawiono na rysunku 1.
Listing 5. Fragment pliku widoku
...
<td><?= $this->pnConvertByteToString($file['size']); ?></td>
...
Rys. 1. Własny helper Zend Framework 3 przykład
Zaprezentowany moduł w artykule znajdziemy w pliku helper-module-zf3.zip – kodowanie plików tekstowych UTF-8, znaki końca linii Unix. Moduł PnConvertByteToString został utworzony w środowisku programistycznym Eclipse PDT.
Wybrane książki:
- Adam Omelak: Zend Framework 3. Poradnik programisty, Wydawnictwo Helion, 2017.
Wybrane strony: