Temel Eklenti Oluşturma ve Yayınlama Süreci

Prensip

  1. 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.
  2. Üç dosyayı paketlemek ve composer'a yayınlamak için bir komut kullanıyoruz.
  3. 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/plugin dizinine kopyalar ve webman'ı yükler. Bu, çapraz alan ara yazılım dosyasının otomatik yapılandırılmasını sağlar.
  4. 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

  1. Eklenti adı iki bölümden oluşur; sağlayıcı ve eklenti adı, örneğin webman/push, bu composer paket adıyla eşleşir.
  2. 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.
  3. 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.
  4. 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ğin config('plugin.webman.push.app.app_key').
  5. Eklenti kendi veritabanı yapılandırmasına sahipse, aşağıdaki şekilde erişir. illuminate/database için Db::connection('plugin.sağlayıcı.eklenti_adı.belirli_bağlantı'), thinkrom için Db::connct('plugin.sağlayıcı.eklenti_adı.belirli_bağlantı').
  6. 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.
  7. 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/src altında tutulmalı, ana projeye kopyalanmamalıdır.
  8. 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/admin aş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ırken plugin ön eki ile erişin; örneğin config('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 sonra config/plugin/foo/admin dizini vendor/foo/admin/src dizinine 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 olarak vendor/foo/admin/src içindeki yapılandırmayı mevcut proje config/plugin dizinine kopyalamaktadır.
Kaldırma sırasında varsayılan işlem mevcut proje config/plugin iç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/admin olarak varsayalım.
  • https://github.com/kullanıcı_adınız/admin/releases/new adresine gidin ve v1.0.0 gibi bir sürüm yayınlayın.
  • packagist adresine gidin, üst kısımdaki Submit seçeneğine tıklayın ve github proje adresinizi https://github.com/kullanıcı_adınız/admin gönderin, bu şekilde eklentinizin yayımlanmasını tamamladınız.

İpucu
Eğer packagist üzerinde eklenti gönderimi sırasında ad çakışması ortaya çıkarsa, farklı bir sağlayıcı adı seçebilirsiniz; örneğin foo/admin yerine myfoo/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ın sağlayıcı-eklenti_adı:belirli_komut şeklinde olması önerilir; örneğin foo/admin eklentisi için tüm komutlar foo-admin: ile başlamalıdır; örneğin foo-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/console her eklentinin command.php dosyası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.