Denetleyiciden aramak istediğim yeni bir PHP sınıfım var. Nerede, CakePHP klasör yapısında, bu yeni sınıfı yerleştirmeli ve bir denetleyiciden onu çağırmak veya kullanmak için prosedür nedir? İşbirliğiniz için şimdiden teşekkür ederiz!CakePHP 3'te özel bir PHP sınıfı nereye yerleştirilir?
cevap
, bir yarar sınıf olarak herhangi kendi sınıf ve ayrıca herhangi bir üçüncü tarafların sınıfını yeniden kullanabilirsiniz. Öyleyse, sınıfı src/Utility
klasörüne yerleştirebilirsiniz. Lütfen uygun isim alanını kullanın. Bundan sonra, bu sınıfı CakPHP 3.x'te herhangi bir yerde kullanabilirsiniz.
YERİ NASIL:
Say, dosya adını Jorge.php
kullanarak src/Utility
klasörüne kaydedin Jorge
adında bir sınıf var. Jorge.php
dosyanızın namespace App\Utility;
ifadesinin üst kısmına yerleştirin.
NASIL KULLANILIR: Eğer bu sınıfı kullanmak istediğiniz dosya hangi
, sadece use App\Utility\Jorge;
koydu. Bundan sonra, sınıfı bu dosyaya çağırabilirsiniz.
ALTERNATİF ÇÖZÜM: Birçok sınıfların üçüncü şahıs paketi varsa
, o zaman her yerde/src/klasöründe istiyorum https://stackoverflow.com/a/28527683/1787600
Oluşturduğunuz çoğu CakePHP türetilmiş kod, belgelerde belirtilen yapıya girer. Ben senin anlamını tahmin ediyorum olarak "tamamen keyfi yarar sınıfları" için
http://book.cakephp.org/3.0/en/intro/cakephp-folder-structure.html
, CakePHP "üçüncü parti bağımlılıkları" (kavramsal) olarak o davranır ve onlar "satıcıları" klasöründe koyarak öneririz. Yeni içerik kendi yardımcı programınız olduğunda, bu klasördeki şeyleri düzenlememek için önerilerini göz ardı edebilirsiniz.
Yükleme için, eski php'nin require
işlev ailesini kullanın.
http://book.cakephp.org/3.0/en/core-libraries/app.html
uygulamanızda Composer ile değil edersek, el tüm satıcı kendini kütüphaneleri yüklemek gerekir
.
require
için gerekli olan yolları oluşturmak için CakePHP global sabitlerini/işlevlerini kullanabilirsiniz. Benim bakış itibaren
APP
http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html
,APP_DIR
,
WWW_ROOT
vb
"* Yükleme için, eski eski php'lerin işlev ailesini kullanın. *" - CakePHP ad alanlarını ve PSR otomatik yükleyiciyi kullanıyor. Eski kod kullanıldığında, artık kullanmaya gerek duyulmadan, neredeyse hiç ihtiyaç yoktur. Ad alanının ve yolun eşleştiğinden emin olun ve kullanıldığında sınıfı otomatik olarak bulacaktır. – burzum
Elbette, parlak bir modern dosya oluşturduğunu varsayarsak, otomatik yüklemeye gidebilir. Ancak, modernleştirilmiş yardımcı programların tam bir yığınını kullanmıyorsa, eski bir okul üçüncü parti kitaplığında çekerken olduğu gibi eski bir okul 'include' kullanmak daha kolay olacaktır. Ya bir sınıf yerine bir işlev yazmayı bırakıyorsa? OP'nin sorusu sınıf odaklıydı, fakat daha genel durum: "Bir dosyadan, hatta bazı veri/resimler/ses/videolara sığmayan, eski ve iyi bir kütüphane seti kullanmak istiyorum. PSR otomatik yükleme ". – starlocke
Sen koyabilirsiniz takip edebilirsiniz. Özel sınıflarınızı aşağıdaki gibi klasörlerde toplayabilirsiniz: Arabirim, DTO, Yardımcı Program, Özel veya her neyse. CakePHP 3.x, PSR-4 otomatik yükleyiciyi kullandığı için, sınıf bir kez kullanıldıktan sonra başlatılacaktır. Doğru ad alanı eklemeyi unutma. Örneğin özel arabirim kullanmak istiyorsanız src/Custom/Owned dosyasını ekleyin.Eğer sınıflar daha iyi bir çözüm yeniden gidiş varsa kendi packagist paketi oluşturmak olacaktır
...
class UsersTable extends Table implements Owned
{
...
ve depolanacak böylece bestecinin dahil: php
<?php
namespace App\Custom;
interface Owned
{
/**
* Find username owning object by object primary id
* @param $id
* @return string|int
*/
public function owner($id) : string;
}
...
Sonra hemen kullanabilirsiniz "/ vendor"
Denetleyiciden onu kullanmak isterseniz, neden bir bileşen yapamazsınız? – ADmad
Bu sınıf, CakePHP uygulamanız veya üçüncü taraf kaynaklarınız için yazdığınız bir şey mi? – drmonkeyninja
@drmonkeyninja, üçüncü taraf bir sınıftır. hiç fark yapar mı? – Jorge