Sto cercando di creare una estensione per includere una libreria php chiamata Cron
L’oggetto principale si trova in vendor/cron/CronExpression.php
Dato che quel php NON carica in automatico gli altri file .php di cui ha bisogno, e che stanno nella stessa cartella, ho pensato di creare un autoloader.
class MyExtension extends CComponent
{
private static $class_path;
public static function ncron_autoload($class_name)
{
// include_once($class_name. ".php");
$path = self::$class_path."/".$class_name . ".php";
if (file_exists($path)) {
include($path);
}
return true;
}
public function init() {
self::$class_path = Yii::import("application.vendor.Cron.*");
Yii::registerAutoloader(array ("MyExtension", "ncron_autoload") );
return new CronExpression();
}
}
Questo codice però provoca un errore di ‘cannot redeclare’, dovuto al fatto che l’autoload di Yii viene eseguito lo stesso
si veda il codice dell’autoload di Yii qui: https://github.com/yiisoft/yii/blob/1.1.14/framework/YiiBase.php#L397
Come faccio a dire a php ‘quella classe c’è già in memoria’ ?
Oppure, come faccio ad EVITARE di caricare io la classe e far si che lo faccio yii da solo ?