Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

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:

  1. config/module.config.php (Listing 1)
  2. src/Factory/View/Helper/PnConvertByteToStringFactory.php (Listing 2)
  3. src/View/Helper/PnConvertByteToString.php (Listing 3)
  4. 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 = '&nbsp;';
      }

      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

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:

Wybrane strony:

Książki Helion