2015-12-08 19 views
6

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?

+1

Denetleyiciden onu kullanmak isterseniz, neden bir bileşen yapamazsınız? – ADmad

+0

Bu sınıf, CakePHP uygulamanız veya üçüncü taraf kaynaklarınız için yazdığınız bir şey mi? – drmonkeyninja

+0

@drmonkeyninja, üçüncü taraf bir sınıftır. hiç fark yapar mı? – Jorge

cevap

12

, 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

0

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

+4

"* 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

+0

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

0

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"

İlgili konular