Temel Eklenti Oluşturma ve Yayınlama Süreci
Prensip
- Bir çapraz alan eklentisi örneğinde, eklenti üç bölümden oluşur; biri çapraz alan ara yazılım programı dosyası, diğeri ara yazılım yapılandırma dosyası middleware.php ve üçüncüsü ise komutla otomatik oluşturulan Install.php dosyasıdır.
- Üç dosyayı paketlemek ve composer'a yayınlamak için bir komut kullanıyoruz.
- Kullanıcı composer ile çapraz alan eklentisini kurduğunda, eklentideki Install.php dosyası çapraz alan ara yazılım programı dosyasını ve yapılandırma dosyasını
/{ana proje}/config/plugindizinine kopyalar ve webman'ı yükler. Bu, çapraz alan ara yazılım dosyasının otomatik yapılandırılmasını sağlar. - Kullanıcı composer ile bu eklentiyi kaldırdığında, Install.php ilgili çapraz alan ara yazılım programı dosyası ve yapılandırma dosyasını siler; eklentinin otomatik kaldırılmasını sağlar.
Standart
- Eklenti adı iki bölümden oluşur;
sağlayıcıveeklenti adı, örneğinwebman/push, bu composer paket adıyla eşleşir. - Eklenti yapılandırma dosyaları tek tip olarak
config/plugin/sağlayıcı/eklenti_adı/altında yer almalıdır (console komutu yapılandırma dizinini otomatik oluşturacaktır). Eğer eklentinin yapılandırmaya ihtiyacı yoksa, otomatik oluşturulan yapılandırma dizini silinmelidir. - Eklenti yapılandırma dizini yalnızca app.php eklenti ana yapılandırması, bootstrap.php işlem başlatma yapılandırması, route.php yönlendirme yapılandırması, middleware.php ara yazılım yapılandırması, process.php özel işlem yapılandırması, database.php veritabanı yapılandırması, redis.php redis yapılandırması ve thinkorm.php thinkorm yapılandırması gibi dosyaları destekler. Bu yapılandırmalar webman tarafından otomatik olarak tanınır.
- Eklenti aşağıdaki yöntemle yapılandırmayı alır:
config('plugin.sağlayıcı.eklenti_adı.yapılandırma_dosyası.belirli_yapılandırma_ögesi');, örneğinconfig('plugin.webman.push.app.app_key'). - Eklenti kendi veritabanı yapılandırmasına sahipse, aşağıdaki şekilde erişir.
illuminate/databaseiçinDb::connection('plugin.sağlayıcı.eklenti_adı.belirli_bağlantı'),thinkromiçinDb::connct('plugin.sağlayıcı.eklenti_adı.belirli_bağlantı'). - Eğer eklenti
app/dizini altında iş dosyaları koyması gerekiyorsa, kullanıcı projesi ve diğer eklentilerle çakışmadığından emin olmalıdır. - Eklentinin ana projeye dosya veya dizin kopyalamasından mümkün olduğunca kaçınması gerekir; örneğin, çapraz alan eklentisi yalnızca yapılandırma dosyasını ana projeye kopyalamalı, ara yazılım dosyası
vendor/webman/cros/srcaltında tutulmalı, ana projeye kopyalanmamalıdır. - Eklenti ad alanlarının büyük harfle başlaması önerilir; örneğin Webman/Console.
Örnek
webman/console komut satırı kurulum
composer require webman/console
Eklenti Oluşturma
Oluşturulacak eklentinin adı foo/admin olsun (isim, daha sonra composer ile yayımlanacak proje adı olmakta, küçük harfle yazılmalıdır).
Aşağıdaki komutu çalıştırın:
php webman plugin:create --name=foo/admin
Eklenti oluşturulduktan sonra, eklenti ile ilgili dosyaları saklamak için vendor/foo/admin altında dizin ve eklenti ile ilgili yapılandırmaları saklamak için config/plugin/foo/admin altında bir dizin oluşturulacaktır.
Dikkat
config/plugin/foo/adminaşağıdaki yapılandırmaları destekler; app.php eklenti ana yapılandırması, bootstrap.php işlem başlatma yapılandırması, route.php yönlendirme yapılandırması, middleware.php ara yazılım yapılandırması, process.php özel işlem yapılandırması, database.php veritabanı yapılandırması, redis.php redis yapılandırması ve thinkorm.php thinkorm yapılandırması. Yapılandırma formatı webman ile aynıdır, bu yapılandırmalar otomatik olarak webman tarafından tanınır ve yapılandırmaya dahil edilir.
Kullanırkenpluginön eki ile erişin; örneğinconfig('plugin.foo.admin.app').
Eklenti Dışa Aktarma
Eklentiyi geliştirdikten sonra, eklentiyi dışa aktarmak için aşağıdaki komutu çalıştırın:
php webman plugin:export --name=foo/admin
Dışa aktarım
Açıklama
Dışa aktarıldıktan sonraconfig/plugin/foo/admindizinivendor/foo/admin/srcdizinine kopyalanacak ve otomatik olarak bir Install.php dosyası oluşturulacaktır. Install.php, otomatik kurulum ve otomatik kaldırma işlemleri sırasında bazı işlemleri gerçekleştirmek için kullanılır.
Kurulum varsayılan olarakvendor/foo/admin/srciçindeki yapılandırmayı mevcut projeconfig/plugindizinine kopyalamaktadır.
Kaldırma sırasında varsayılan işlem mevcut projeconfig/pluginiçindeki yapılandırma dosyalarını silmektir.
Eklentiyi kurulum ve kaldırma sırasında bazı özelleştirilmiş işlemler yapmak için Install.php'yi değiştirebilirsiniz.
Eklenti Gönderimi
- Varsayılan olarak, github ve packagist hesaplarınız olduğunu varsayıyoruz.
- github üzerinde bir admin projesi oluşturun ve kodunuzu yükleyin, proje adresi varsayılan olarak
https://github.com/kullanıcı_adınız/adminolarak varsayalım. https://github.com/kullanıcı_adınız/admin/releases/newadresine gidin vev1.0.0gibi bir sürüm yayınlayın.- packagist adresine gidin, üst kısımdaki
Submitseçeneğine tıklayın ve github proje adresinizihttps://github.com/kullanıcı_adınız/admingönderin, bu şekilde eklentinizin yayımlanmasını tamamladınız.
İpucu
Eğerpackagistüzerinde eklenti gönderimi sırasında ad çakışması ortaya çıkarsa, farklı bir sağlayıcı adı seçebilirsiniz; örneğinfoo/adminyerinemyfoo/admin.
Sonrasında eklenti projenizin kodları güncellendikçe, kodu github'a senkronize etmeniz ve tekrar https://github.com/kullanıcı_adınız/admin/releases/new adresine giderek yeni bir sürüm yayınlamanız gerekecek; ardından https://packagist.org/packages/foo/admin sayfasına gidip Update düğmesine tıklayarak sürümünüzü güncelleyebilirsiniz.
Eklentiye Komut Eklemek
Bazen eklentilerimiz bazı yardımcı işlevleri sağlayan özel komutlara ihtiyaç duyar; örneğin webman/redis-queue eklentisini kurduktan sonra, proje otomatik olarak bir redis-queue:consumer komutunu ekleyecektir; kullanıcı sadece php webman redis-queue:consumer send-mail çalıştırdığında proje içinde bir SendMail.php tüketici sınıfı oluşturulacak; bu, hızlı geliştirmeyi kolaylaştırır.
Diyelim ki foo/admin eklentisi foo-admin:add komutunu eklemek istiyor, aşağıdaki adımları izleyin.
Yeni Komut Oluşturma
Komut dosyasını oluşturun vendor/foo/admin/src/FooAdminAddCommand.php
<?php
namespace Foo\Admin;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class FooAdminAddCommand extends Command
{
protected static $defaultName = 'foo-admin:add';
protected static $defaultDescription = 'Burada komut satırı açıklaması var';
/**
* @return void
*/
protected function configure()
{
$this->addArgument('name', InputArgument::REQUIRED, 'Ekleme İsmi');
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return int
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$name = $input->getArgument('name');
$output->writeln("Admin ekle $name");
return self::SUCCESS;
}
}
Dikkat
Eklentiler arasında komut çakışmalarını önlemek için, komut satırı formatınınsağlayıcı-eklenti_adı:belirli_komutşeklinde olması önerilir; örneğinfoo/admineklentisi için tüm komutlarfoo-admin:ile başlamalıdır; örneğinfoo-admin:add.
Yapılandırmayı Artırma
Yapılandırmayı oluşturun config/plugin/foo/admin/command.php
<?php
use Foo\Admin\FooAdminAddCommand;
return [
FooAdminAddCommand::class,
// ....birden fazla yapılandırma ekleyebilirsiniz...
];
İpucu
command.php, eklentilere özel komutlar tanımlamak için kullanılır; dizideki her bir öğe bir komut sınıfı dosyasını temsil eder ve her dosya bir komuta karşılık gelir. Kullanıcı komut satırını çalıştırdığında,webman/consoleher eklentinincommand.phpdosyasında ayarlanan özel komutları otomatik olarak yükleyecektir. Komutlarla ilgili daha fazlasını öğrenmek için komut satırı belgesine bakabilirsiniz.
Dışa Aktarma Gerçekleştirin
php webman plugin:export --name=foo/admin komutunu çalıştırarak eklentiyi dışa aktarın ve packagist'e gönderin. Bu şekilde kullanıcı foo/admin eklentisini kurduğunda, foo-admin:add komutu da eklenecektir. php webman foo-admin:add jerry çalıştırıldığında Admin ekle jerry çıktısı verilecektir.