La clase existe en un archivo externo

¿Cómo controlo un archivo externo para una clase?

Estoy intentando configurar una función de instalación para mis módulos, por lo que estoy tratando de que cargue una lista de directorios y luego verifique si el archivo del módulo tiene un método llamado instalar. Entonces, solo los módulos con este método se mostrarán en la lista.

Aquí está mi código hasta ahora:

$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 .='
';

El nombre del archivo del módulo es el mismo que el nombre del directorio. ejemplo: carpeta: Admin, archivo: Admin.php

Si esto no se puede hacer, entonces creo que crearé un archivo separado solo para la función de instalación.

Supongo que quiere decir “¿Cómo puedo averiguar si un archivo PHP define una determinada clase?”

Si puedes incluir cada archivo PHP que quieras analizar

es fácil: simplemente compare los resultados de get_declared_classes() antes y después de la inclusión:

 $before = get_declared_classes(); include "myfile.php"; $after = get_declared_classes(); $new_classes = array_diff($before, $after); print_r($new_classes); // Outputs all classes defined in myfile.php 

Si no puede incluir los archivos PHP (por ejemplo, porque tienen el mismo nombre de clase)

Esto es más complicado. Si quiere hacerlo bien, las funciones del tokenizer pueden analizar un archivo en el nivel del analizador de PHP. Ejecute un token_get_all () en su archivo para descubrir cuál buscar.

Si sus clases siguen una convención simple, basta con comprobar “class classname” usando una expresión regular.

Intereting Posts