Temel Eklenti Oluşturma ve Yayınlama Süreci
İlke
- CORS eklentisi örneği olarak, eklentiler üç bölüme ayrılır: CORS middleware program dosyası, middleware.php adlı middleware yapılandırma dosyası ve komutla otomatik oluşturulan Install.php.
- Üç dosyayı bir araya getirip ve composer'a yayınlamak için bir komut kullanırız.
- Kullanıcı CORS eklentisini composer ile yüklediğinde, Install.php dosyası, CORS middleware program dosyalarını ve yapılandırma dosyalarını
{ana proje}/config/plugin
altına kopyalar ve webman tarafından yüklenmesini sağlar. Otomatik olarak CORS middleware dosyasının yapılandırılmasını sağlar. - Kullanıcı eklentiyi composer ile kaldırdığında, Install.php ilgili CORS middleware program dosyalarını ve yapılandırma dosyalarını kaldırarak eklentinin otomatik olarak kaldırılmasını sağlar.
Standart
- Eklenti adı,
üretici
veeklenti adı
olmak üzere iki kısımdan oluşur, örneğinwebman/push
, bu, composer paket adıyla eşleşir. - Eklenti yapılandırma dosyaları genellikle
config/plugin/üretici/eklenti adı/
içine yerleştirilir (console komutları otomatik olarak yapılandırma dizini oluşturacaktır). Eğer eklenti yapılandırmaya ihtiyaç duymuyorsa, otomatik oluşturulan yapılandırma dizinini kaldırmanız gerekir. - Eklenti yapılandırma dizini, sadece 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 middleware yapılandırması, process.php özel işlem yapılandırması, database.php veritabanı yapılandırması, redis.php redis yapılandırması, thinkorm.php thinkorm yapılandırması gibi yapılandırmaları desteklemektedir. Bu yapılandırmalar otomatik olarak webman tarafından tanınır.
- Eklenti, yapılandırmaya erişmek için
config('plugin.üretici.eklenti adı. yapılandırma dosyası. belirli yapılandırma öğesi');
gibi bir yöntem kullanır, örneğinconfig('plugin.webman.push.app.app_key')
- Eklentinin kendi veritabanı yapılandırması varsa, aşağıdaki yöntemlerle erişilir:
illuminate/database
içinDb::connection('plugin.üretici.eklenti adı. belirli bağlantı')
,thinkrom
içinDb::connct('plugin.üretici.eklenti adı. belirli bağlantı')
- Eğer eklentinin
app/
dizinine iş dosyaları koyması gerekiyorsa, bu dosyaların ana proje ve diğer eklentilerle çakışmadığından emin olun. - Eklentinin mümkün olduğunca ana projeye dosya veya dizin kopyalamaktan kaçınması önerilir, örneğin, CORS eklentisi yapılandırma dosyalarının yanı sıra, middleware dosyaları da ana projeye kopyalanacaksa, bu dosyaların
vendor/webman/cros/src
altında olması ve ana projeye kopyalanmaması gerekir. - Eklenti ad alanı büyük harf kullanılması önerilir, örneğin Webman/Console.
Örnek
webman/console
komut satırı yükleme
composer require webman/console
Eklenti Oluştur
Örneğin, oluşturulan eklenti adı foo/admin
(ad aynı zamanda sonraki olarak yayımlanacak proje adıdır, ad 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 vendor/foo/admin
(eklentiyle ilgili dosyaları depolamak için) ve config/plugin/foo/admin
(eklentiyle ilgili yapılandırmaları depolamak için) dizinlerini oluşturulur.
Not
config/plugin/foo/admin
şu 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 middleware yapılandırması, process.php özel işlem yapılandırması, database.php veritabanı yapılandırması, redis.php redis yapılandırması, thinkorm.php thinkorm yapılandırması. Yapılandırma biçimi webman ile aynıdır ve bu yapılandırmalar otomatik olarak webman tarafından tanınarak yapılandırma içine birleştirilir.
plugin
önekiyle erişilir, örneğin config('plugin.foo.admin.app');
Eklenti Dışa Aktar
Eklenti geliştirildikten sonra, aşağıdaki komutla eklenti dışa aktarılır
php webman plugin:export --name=foo/admin
Açıklama
Dışa aktarıldıktan sonra, config/plugin/foo/admin dizini vendor/foo/admin/src dizinine kopyalanır ve aynı zamanda otomatik olarak bir Install.php oluşturulur; Install.php, otomatik yükleme ve kaldırma sırasında bazı işlemleri gerçekleştirmek üzere kullanılır.
Varsayılan yükleme işlemi, vendor/foo/admin/src dizinindeki yapılandırmaları mevcut projenin config/plugin altına kopyalamaktır.
Kaldırma işlemi varsayılan olarak mevcut projenin config/plugin dizinindeki yapılandırma dosyalarını siler.
Install.php dosyasını, kurulum ve kaldırma sırasında özelleştirilmiş işlemler yapmak için değiştirebilirsiniz.
Eklenti Gönder
- Varsayalım ki github ve packagist hesabınız var.
- github'da bir admin projesi oluşturun ve kodları yükleyin, projenin adresi varsayılan olarak
https://github.com/yourusername/admin
olsun. https://github.com/yourusername/admin/releases/new
adresine giderekv1.0.0
gibi bir sürüm yayınlayın.- packagist'e gidin ve gezinme çubuğunda
Submit
e tıklayarak github proje adresinizi,https://github.com/yourusername/admin
, gönderin. Böylece bir eklenti yayınlama işlemi tamamlanmış olur.
İpucu
Packagist
te eklenti gönderirken çakışma hatası görünürse, başka bir üretici adı seçebilirsiniz. Örneğin,foo/admin
yerinemyfoo/admin
.
Eklenti proje kodunuzu güncellediğinizde, kodları github'a senkronize etmeniz ve tekrar https://github.com/yourusername/admin/releases/new
adresine giderek bir sürüm yayınlamanız ve ardından https://packagist.org/packages/foo/admin
sayfasında Update
düğmesine tıklamanız gerekecektir.
Eklentiye Komut Ekleme
Bazı durumlarda eklentilerimiz, bazı yardımcı işlevleri sağlamak için özel komutlara ihtiyaç duyabilir. Örneğin, webman/redis-queue
eklentisini yükledikten sonra, projeye otomatik olarak redis-queue:consumer
komutu eklenir. Kullanıcılar sadece php webman redis-queue:consumer send-mail
komutunu çalıştırdıklarında, projede SendMail.php adında bir tüketici sınıfı oluşturulacaktır. Bu, hızlı bir şekilde geliştirme yapmaya yardımcı olur.
Örneğin foo/admin
eklentisi, foo-admin:add
komutunu eklemesi gerektiğini varsayalım. Aşağıdaki adımları takip edin.
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 = 'Bu komutun tanımı burada yer alır';
/**
* @return void
*/
protected function configure()
{
$this->addArgument('name', InputArgument::REQUIRED, 'Eklenecek isim');
}
/**
* @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;
}
}
Not
Eklentiler arasında komut çakışmasını önlemek için komut satırı formatı önerilirüretici-eklentiadı:belirli komut
örneğinfoo/admin
eklentisi için tüm komutlarının öneki olarakfoo-admin:
olmalıdır, örneğinfoo-admin:add
.
Yapılandırma Ekleme
Yapılandırma ekleyin config/plugin/foo/admin/command.php
<?php
use Foo\Admin\FooAdminAddCommand;
return [
FooAdminAddCommand::class,
// ....birden fazla yapılandırma eklenebilir...
];
İpucu
command.php
eklentiye özel komutlar eklemek için kullanılır, dizide her bir öğe bir komut dosyasını temsil eder, her bir dosya bir komut ile ilişkilidir. Kullanıcı komut satırını çalıştırdığında,webman/console
otomatik olarak her eklentinincommand.php
dosyasında belirtilen özel komutları yükler. Daha fazla komut satırıyla ilgili bilgi için Komut Satırı sayfasına bakabilirsiniz.
Dışa Aktarma İşlemini Gerçekleştirme
php webman plugin:export --name=foo/admin
komutunu çalıştırarak, eklentiyi dışa aktarın ve packagist
'e gönderin. Kullanıcılar foo/admin
eklentisini yükledikten sonra, foo-admin:add
komutu otomatik olarak eklenir. php webman foo-admin:add jerry
komutunun çalıştırılması durumunda Admin ekle jerry
yazdırılır.