Zend 3

Przykład zastosowania przestrzeni nazw we Frameworku Zend3 (pochodzi z komponentu Zend\Mvc) :

<?php
namespace Zend\Mvc;

/**
 * Main application class for invoking applications.
 */
class Application
{
    // ... class members were omitted for simplicity ...
}

W Zend Framework 3 wszystkie klasy należą do przestrzeni nazw najwyższego poziomu Zend. Przestrzeń nazw Mvc, która jest zagnieżdżona w przestrzeni nazw Zend. Wszystkie klasy komponentu Mvc (w tym klasa aplikacji Zend\Mvc\Application pokazana w tym przykładzie należą do tej przestrzeni nazw. Do klasy Application [\Zend\Mvc\Application], można odwołać się używając kwalifikowanej nazwy:

<?php
$application = new \Zend\Mvc\Application();

Yii1 i composer

Jeśli tworzymy aplikację która nie korzysta z Composera, należy przesunąć katalog vendor i plik composera do miejsca z którego będzie można przyłączać biblioteki. Poniżej mamy przykład dla aplikacji w yii1 (choć dla nowych aplikacji chyba lepiej od razu użyć yii2).

Tworzymy aplikację:

vendor/yiisoft/yii/framework/yiic webapp <nazwa aplikacji>

Teraz powinniśmy przesunąć pliki konfiguracyjne Composera (wraz z podkatalogiem vendor) do katalogu protected. Wówczas w pliku index.php możemy zdefiniować:

$yii=dirname(__FILE__).'/protected/vendor/yiisoft/yii/framework/yii.php';

Istnieje zminimalizowana wersja yii1, którą można użyć w miejsce dystrybucji standardowej:

https://github.com/square1-io/yii-framework

Wtedy mamy w pliku composer.json:

"require": {
"square1-io/yii-framework": "1.1.14"
}

Aby wykorzystać inne biblioteki, możemy użyć polecenia composer require. Na przykład:

composer require clevertech/yii-booster

Sekcja „require w naszym pliku composer.json zmieni się na:

    "require": {
        "square1-io/yii-framework": "1.1.14",
        "clevertech/yii-booster": "^4.0"
    },

Oczywiście musimy odpowiednio skonfigurować aliasy. W pliku konfiguracyjnym config/main.php dodajemy na początku:

Yii::setPathOfAlias('booster', dirname(__FILE__).'/../vendor/clevertech/yii-booster/src/');

Dodatkowo:

'preload'=>array('log','bootstrap'),

'components'=>array(
'bootstrap' => array(
'class' => 'booster.components.Booster'
),

Możemy już przetestować kontrolki (widgets) Bootstrapa. Na przykład dodając do views/site/index.php:

$this->widget('booster.widgets.TbButton', array(
'buttonType'=>'submit',
'context'=>'primary',
'label'=>'OK',
));

Joomla i Composer

Komponenty dla CMS Joomla można tworzyć także z użyciem Composera. Pomocny może być w tym projekt https://github.com/galicea/jcc (plik Composera znajdziesz w katalogu: https://github.com/galicea/jcc/tree/master/src/library).

Autoloader w Yii

Framework Yii daje możliwość używania wielu ładowarek (autoloader) dopiero w wersji 2.0. W wersji 1.0 mamy tylko jedną ładowarkę (używaną przezYii::import()) i jedną przestrzeń nazw (http://www.yiiframework.com/doc/guide/1.0/pl/basics.namespace).

Chcąc używać bibliotek z własnymi przestrzeniami nazw trzeba nieco zmienić moduł yii.php - wykorzystując moduł Gautoloader: https://gist.github.com/mindplay-dk/4234540.

Po tej modyfikacji możemy zaimplementować rozszerzenie do Yii do obsługi raportów Jasperreport:

<?php
use Jaspersoft\Client\Client;
class jrs extends CComponent {
public function report($server="http://jasper.pwste.edu.pl:8080/jasperserver",
                       $username="jasperadmin",
                       $password="<haslo>",
                       $reportUri='/reports/report001') {
  $cl = new Client($server, $username,$password,"");
  $cl->setRequestTimeout(60);
  $report = $cl->reportService()->runReport($reportUri, 'pdf');
  ....
 }
}

W pliku konfiguracyjnym main.php możemy zarejestrować biblitekę Jaspersoft:

Yii::getAutoloader()->addNamespace('Jaspersoft', 'protected/extensions/jrs/Jaspersoft');
return array(

'import'=>array(
'ext.jrs.*',
...
),
'components'=>array(
'jrs'=>array('class'=>'ext.jrs.jrs'),
...