A class existe em um arquivo externo

Como faço para verificar um arquivo externo para uma class?

Estou tentando configurar um recurso de instalação para meus módulos, então estou tentando levá-lo a carregar uma lista de diretórios e depois verificar se o arquivo do módulo possui um método chamado instalação. Portanto, apenas os módulos com este método serão exibidos na lista.

Aqui esta o meu codigo ate agora:

$output .= '
'; $dirHandler = opendir('modules') or die ("Could not open module folder"); while ($dir = readdir($dirHandler)) { if($dir!="." && $dir!=".."){ // Code to filter out modules with install class -- goes here $output .=''.$dir.''; } } $output .='
';

O nome do arquivo do módulo é o mesmo que o nome do diretório. exemplo: pasta: Admin, arquivo: Admin.php

Se isso não puder ser feito, acho que vou criar um arquivo separado apenas para a function de instalação.

Eu suponho que você quer dizer “Como posso descobrir se um arquivo PHP define uma determinada class?”

Se você pode include cada arquivo PHP que deseja analisar

é fácil: basta comparar os resultados de get_declared_classs() antes e depois da inclusão:

 $before = get_declared_classs(); include "myfile.php"; $after = get_declared_classs(); $new_classs = array_diff($before, $after); print_r($new_classs); // Outputs all classs defined in myfile.php 

Se você não pode include os arquivos PHP (por exemplo, porque eles têm o mesmo nome de class)

Isso é mais complicado. Se você quiser fazê-lo direito, as funções tokenizer podem analisar um arquivo no nível do analisador PHP. Execute um token_get_all () no seu arquivo para descobrir qual deles procurar.

Se as suas classs seguem uma convenção simples, basta verificar se “class classname” usando uma expressão regular pode ser suficiente.