A classe App é responsável pela localização dos recursos e pelo gerenciamento de caminhos.
Este método é usado para resolver nomes de classes no CakePHP. Resolve os nomes abreviados do CakePHP e retorna o nome da classe totalmente resolvido:
// Resolva um nome de classe curto com o namespace + sufixo.
App::classname('Auth', 'Controller/Component', 'Component');
// Retorna Cake\Controller\Component\AuthComponent
// Resolve o nome do plugin
App::classname('DebugKit.Toolbar', 'Controller/Component', 'Component');
// Retorna DebugKit\Controller\Component\ToolbarComponent
// Os nomes com \ serão retornados inalterados.
App::classname('App\Cache\ComboCache');
// Retorna App\Cache\ComboCache
Ao resolver as classes, o namespace App
será tentado e, se
a classe não existir, o espaço para nome Cake
será tentado. Se ambos
os nomes de classe não existirem, false
será retornado.
Usado para obter locais para caminhos com base em convenções:
// Obtenha o caminho para o Controller / no seu aplicativo
App::path('Controller');
Isso pode ser feito para todos os namespaces que fazem parte do seu aplicativo. Você também pode buscar caminhos para um plug-in:
// Retorna os caminhos do componente no DebugKit
App::path('Component', 'DebugKit');
App::path()
retornará apenas o caminho padrão e não poderá fornecer
informações sobre caminhos adicionais para os quais o carregador automático
está configurado.
Usado para encontrar o caminho para um pacote dentro do CakePHP:
// Obtenha o caminho para os mecanismos de cache.
App::core('Cache/Engine');
Os plug-ins podem ser localizados com o Plugin. Usar Plugin::path('DebugKit');
por exemplo, fornecerá o caminho completo para o plug-in DebugKit:
$path = Plugin::path('DebugKit');
Como os temas são plugins, você pode usar os métodos acima para obter o caminho para um tema.
O ideal é que os arquivos do fornecedor sejam carregados automaticamente com
o Composer
, se você tiver arquivos que não possam ser carregados ou instalados
automaticamente com o Composer, será necessário usar o require
para carregá-los.
Se você não conseguir instalar uma biblioteca com o Composer, é melhor instalar cada
biblioteca em um diretório, seguindo a convenção do Composer de vendor/$author/$ package
.
Se você tiver uma biblioteca chamada AcmeLib, poderá instalá-la em vendor/Acme/AcmeLib
.
Supondo que ele não usasse nomes de classe compatíveis com PSR-0, você poderia carregar
automaticamente as classes dentro dele usando classmap
no composer.json
do seu aplicativo:
"autoload": {
"psr-4": {
"App\\": "src/",
"App\\Test\\": "tests/"
},
"classmap": [
"vendor/Acme/AcmeLib"
]
}
Se a sua biblioteca de fornecedores não usa classes e, em vez disso, fornece funções,
você pode configurar o Composer para carregar esses arquivos no início de cada solicitação
usando a estratégia de carregamento automático files
:
"autoload": {
"psr-4": {
"App\\": "src/",
"App\\Test\\": "tests/"
},
"files": [
"vendor/Acme/AcmeLib/functions.php"
]
}
Depois de configurar as bibliotecas do fornecedor, você precisará regenerar o carregador automático do seu aplicativo usando:
$ php composer.phar dump-autoload
Se você não estiver usando o Composer em seu aplicativo, precisará carregar manualmente todas as bibliotecas de fornecedores.