Класс расширения Laravel

Существуют ли какие-либо другие шаги, необходимые для расширения класса в Laravel 3?

Я создал application/libraries/response.php :

 class Response extends Laravel\Response { public static function json($data, $status = 200, $headers = array(), $json_options = 0) { $headers['Content-Type'] = 'application/json; charset=utf-8'; if(isset($data['error'])) { $status = 400; } dd($data); return new static(json_encode($data, $json_options), $status, $headers); } public static function my_test() { return var_dump('expression'); } } 

Но по какой-то причине не my_test() ни my_test() , ни модифицированная функция json() .

В моем контроллере я делаю следующее:

 Response::my_test(); // or $response['error']['type'] = 'existing_user'; Response::json($response); 

И никто не работает, чего мне не хватает?

Related of "Класс расширения Laravel"

Вы должны сначала добавить пространство имен – вот так:

файл: application/libraries/extended/response.php

 <?php namespace Extended; class Response extends \Laravel\Response { public static function json($data, $status = 200, $headers = array(), $json_options = 0) { $headers['Content-Type'] = 'application/json; charset=utf-8'; if(isset($data['error'])) { $status = 400; } dd($data); return new static(json_encode($data, $json_options), $status, $headers); } public static function my_test() { return var_dump('expression'); } } 

Затем внутри config / application.php вам нужно изменить псевдоним

  'Response' => 'Extended\\Response', 

Затем в start.php

 Autoloader::map(array( 'Extended\\Response' => APP_PATH.'libraries/extended/response.php', )); 

Фактически, надлежащим способом расширения библиотеки было бы следующее:

  1. Создайте response.php в application/libraries/
  2. Внутри этого класса расширите класс следующим образом: class Response extends \Laravel\Response
  3. Комментарий 'Response' => 'Laravel\\Response' в application/config/application.php

Протестировано и работает. Вот как я это делаю сейчас