Pergunta

Eu uso um automóvel para incluir aulas. O que estou fazendo agora é usar "Glob" para ler Diferentes e empurrá -los em uma matriz. Existe uma solução melhor para isso?

$path = './';

$files = array_merge(
glob($path.'includes/classes/system/*.class.php'),
glob($path.'includes/classes/system/baseclasses/*.class.php'),
glob($path.'includes/classes/system/systementities/*.class.php'));

EDITAR:

Eu uso isso dentro de uma aula de automóveis. O problema é que tenho que procurar os arquivos com o GLOB. Existe uma maneira mais rápida de fazer isso?

Foi útil?

Solução

O automobilismo será acionado sempre que você estiver tentando usar uma classe que não seja conhecida para PHP. Se você usar include/require, PHP passará por todos os diretórios que você especificou para o seu include_path em php.ini, então não deve haver razão para usar glob. No seu caso, deve ser suficiente definir o include_path para

/path/to/includes/classes/system/

o o mais rápido maneira de incluir arquivos seria usar um Mapa da Classe2File. No entanto, isso exige que você crie esse mapa e mantenha -o atualizado quando você modifica seu aplicativo.

Outras dicas

O PHP já resolveu esse problema para você. Use PHP's Autoloader embutido. Nunca role o seu próprio quando o idioma/estrutura o fornecer para você.

function __autoload($class) {
  $classfile = $class.'.class.php';
  $path = './includes/classes/system/';
  if (is_file($path.$classfile)) require_once($path.$classfile);
  if (is_file($path.'baseclasses/'.$classfile)) require_once($path.'baseclasses/'.$classfile);
  if (is_file($path.'systementities/'.$classfile)) require_once($path.'systementities/'.$classfile);
}

... o que ainda não é a melhor maneira, mas isso o leva usando o Glob (). Se você geralmente está carregando todas as suas sistemas, deve haver uma lista de necessidades codificadas () em um script de inicialização/configuração. Existem muitas opções sobre como organizar e buscar arquivos de classe. Para reduzir o tempo em busca de scripts, você pode pensar no seu filetree como uma interface. Por uma questão de simplicidade, você pode colocar todas as classes não obrigatórias na mesma pasta, reduzindo as chamadas is_file () para uma.

No meu sistema, tenho classes de objetos agrupadas em pastas com seus respectivos scripts e vistas de controle. Minha função __Autoload () tem um trabalho mais simples -

$classfile = $path.$class.'/'.$class.'_class.php';
if (is_file($classfile)) require_once($classfile);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top