Я использую PHP ActiveRecord с моей небольшой инфраструктурой MVC, в которую входит автозагрузчик. В моем контроллере я, например, обращаюсь к модели Pub :: find (64).php autoloader Fatal error: Class not found
Моя проблема заключается в том, что Pub :: найти (64) inheritating пространство имен контроллера и я получаю ошибку
Fatal error: Class 'App\Controllers\Pub' not found in /home/i554246/public_html/mvc/App/Controllers/Index.php on line 27
Pub это имя модуля. Файл включается в порядке. Я могу решить эту проблему, добавив \ Pub :: find (64), но это не очень интуитивно для новых людей в проекте.
Есть ли способ остановить пространство имен, добавляемое для Pub :: find (64), не изменяя эту строку?
Index Контроллер
namespace App\Controllers;
class Index extends \Core\Controller
{
protected
$title = 'Home'
;
/**
* Default action
*/
public function index()
{
// Pass the data to the view to display it
$this->view->set('testdb', \Pub::find(64));
}
}
app.php
/**
* Class autoloader
* @param $className
* @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
*/
public function autoload($className)
{
preg_match('/(^.+\\\)?([^\\\]+)$/', ltrim($className, '\\'), $match);
//Build namespace Autoloading
$file = str_replace('\\', '/', $match[1]) . str_replace('_', '/', $match[2]) . '.php';
//Build Model path
$model = 'App/Models/' . $match[2] . '.php';
if (is_file($file)) {
require $file;
}elseif (is_file($model)) {
require $model;
}
}
Модели/Pub.php
class Pub extends ActiveRecord\Model
{
}
Какова ваша версия PHP? Здесь (правильно, как я не делал класс 'Pub') говорит _« Fatal error: Class 'Pub «not found» _, если я использую ваш индекс, так как '\ Pub' является полностью квалифицированным именем. _However_, это не будет первый раз, когда фреймворк _'ttimizes'_-код, загружая все виды деклараций классов в один длинный файл кеша и включает это вместо вашего фактического кода. Выполняет ли это 'PHP ActiveRecord'? Что означает 'get_included_files()' прямо перед этим '\ Pub'? Что он говорит правильно _ после того, как вы используете другую (рабочую) модель? – Wrikken
PHP-версия 5.3.10, никакая фреймворк не является моей собственной очень маленькой только с автозагрузчиком. Я добавляю модули, и я использую PHP ActiveRecord –
Hm, точно так же, как и мой (Debian 'PHP 5.3.10-2 (cli) (построен: 20 февраля 2012 21:36:46)'), я боюсь, что я Тогда я из идей, надеюсь, кто-то еще может пролить свет на него. – Wrikken