20/09/2015 - SYMFONY
Aşağıdaki örnekte önce basit bir symfony vendor bundle yaratacağız ve daha sonra, onu composer ile ana uygulamamızda kullanmak için yükleyeceğiz.
Inanzzz-MBP:Documents inanzzz$ composer create-project symfony/framework-standard-edition say-hello
Inanzzz-MacBook-Pro:say-hello inanzzz$ php app/console generate:bundle --namespace=Inanzzz/HelloBundle
Gereksiz olan dosya ve klasörleri sildikten sonra, elimizde aşağıdaki gibi bir klasör yapımız olacak.
say-hello
src
Inanzzz
HelloBundle
DependencyInjection
Configuration.php
InanzzzHelloExtension.php
InanzzzHelloBundle.php
.htaccess
.gitignore
composer.json
LICENSE
README.md
Dosyanın içeriğini aşağıdaki ile değiştirdikten sonra composer update
komutunu çalıştırın.
{
"name": "inanzzz/sayhello",
"license": "MIT",
"type": "library",
"description": "Say Hello bundle",
"autoload": {
"psr-0": {
"Inanzzz\\HelloBundle": "src/"
}
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.6.*"
},
"minimum-stability": "stable"
}
/vendor/
/composer.phar
/composer.lock
# say-hello/src/Inanzzz/HelloBundle/Util/Hello.php
namespace Inanzzz\HelloBundle\Util;
class Hello
{
public function name($value)
{
return 'Hello '.$value.'!';
}
}
# say-hello/src/Inanzzz/HelloBundle/Resources/config/services.yml
services:
inanzzz_hello.util.hello: #inanzzz_hello must match DependencyInjection/Configuration.php line $treeBuilder->root('xxxxxxxx');
class: Inanzzz\HelloBundle\Util\Hello
Şu anda elimizde aşağıdaki gibi bir klasör yapısı olacak.
say-hello
src
Inanzzz
HelloBundle
DependencyInjection
Configuration.php
InanzzzHelloExtension.php
Resources
config
service.yml
Util
Hello.php
InanzzzHelloBundle.php
.htaccess
.gitignore
composer.json
LICENSE
README.md
Öncelikle GitHub içine say-hello
isminde bir repository yaratın ve daha sonra yerel uygulamanızda çalışmaya başlayın. Not: Aslında bu işlem ilk sırada yapılır.
Inanzzz-MBP:say-hello inanzzz$ git init
Inanzzz-MBP:say-hello inanzzz$ git add --all
Inanzzz-MBP:say-hello inanzzz$ git commit -m 'First commit'
Inanzzz-MBP:say-hello inanzzz$ git remote add origin git@github.com:Inanzzz/say-hello.git
Inanzzz-MBP:say-hello inanzzz$ git push -u origin master
Aşağıdaki parçaları mevcut olan içerik ile birleştirdikten sonra composer update inanzzz/sayhello
komutunu çalıştırın. Görebileceğiniz gibi GitHub'daki repository linkinin ismi say-hello
, vendor bundle ismi sayhello
ile aynı değil ve de olmak zorunda da değil zaten.
{
...
"repositories": [
{
"type": "git",
"url": "git@github.com:Inanzzz/say-hello.git"
},
...
],
"require": {
...
"inanzzz/sayhello": "dev-master"
...
},
"minimum-stability": "stable"
...
}
Eğer isterseniz aşağıdaki versiyonu kullanabilirsiniz.
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/Inanzzz/say-hello.git"
}
}
Eğer repositories
tanımlamasını tamamen kaldırmak isterseniz, yeni vendorunuzu Packagist adresine yüklemeniz lazım. Vendor bundle üzerinde değişik yapılırsa, Packagist hesabınıza login olup "Force Update" butonu ile değişiklikleri almanız lazım veya bir tane "auto update" görevi yaratabilirsiniz.
Yeni bundle kaydından sonra, yarattığınız servise inanzzz_hello.util.hello
ismini kullanarak ulaşabilirsiniz.
new Inanzzz\HelloBundle\InanzzzHelloBundle(),