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'),
...