No PHP posso incluir um diretório de scripts?
Em vez de:
include('classes/Class1.php');
include('classes/Class2.php');
existe algo como:
include('classes/*');
Não foi possível encontrar uma boa maneira de incluir uma coleção de cerca de 10 subclasses para uma classe específica.
get_include_path()
ainda não pode auto determinar a ordem de carregamento (classe de base pode ser carregado depois classe estendida, erros resultante)Aqui está a maneira como incluo muitas classes de várias pastas no PHP 5. Isso só funcionará se você tiver aulas.
fonte
Sei que este é um post antigo, MAS ... NÃO INCLUI SUAS AULAS ... Em vez disso, use __autoload
Então, sempre que você chamar uma nova classe que ainda não foi incluída, o php disparará __autoload automaticamente e incluirá para você
fonte
Se você estiver usando o php 5, poderá usar o carregamento automático .
fonte
isso é apenas uma modificação do código de Karsten
fonte
Como fazer isso em 2017:
Recomendado pela documentação do PHP aqui: Carregamento automático de classes
fonte
autoload
entrará em jogo somente quando alguém tentar, ou seja, criar um objeto da classe que ainda não foi carregado.Você pode usar set_include_path :
http://php.net/manual/en/function.set-include-path.php
fonte
classes/
ao usarinclude
/require
Se você deseja incluir tudo em um diretório E seus subdiretórios:
Não esqueça que ele usará a ordem alfabética para incluir seus arquivos.
fonte
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.phpSe você deseja incluir várias classes sem precisar definir cada classe de uma vez, você pode usar:
Dessa forma, você pode apenas definir a classe no arquivo php que contém a classe e não uma lista completa de
$thisclass = new thisclass();
Quanto ao quão bem ele lida com todos os arquivos? Não tenho certeza se pode haver uma ligeira diminuição de velocidade com isso.
fonte
Se NÃO houver dependências entre arquivos ... aqui está uma função recursiva para incluir todos os arquivos php em todos os subdiretórios:
fonte
fonte
Sugiro que você use uma função readdir () e faça um loop e inclua os arquivos (veja o 1º exemplo nessa página).
fonte
Não escreva uma função () para incluir arquivos em um diretório. Você pode perder os escopos variáveis e pode ter que usar "global". Apenas faça um loop nos arquivos.
Além disso, você pode ter dificuldades quando um arquivo incluído possui um nome de classe que será estendido para a outra classe definida no outro arquivo - que ainda não está incluído. Por isso tem cuidado.
fonte