2013-01-31 3 views
1

Laravel 3에서 클래스를 확장하는 데 필요한 다른 단계가 있습니까? Laravel extends class

나는 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() 함수 또는 수정 json() 기능도 작동합니다. 내 컨트롤러에서

, 나는 다음을 수행하십시오

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

그리고 아무도 작업, 내가 무엇을 놓치고?

답변

4

먼저 이름 공간을 추가한다 -이 같은 :

파일 : 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'); 
    } 
} 

내부/당신이 그런 별명

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

을 변경해야 application.php 설정 in start.php

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

출력 결과는 다음과 같습니다 :'Class 'Extended \ Response'not found' – Alex

+0

죄송합니다 - 파일을 /application/libraries/extended/response.php에 넣으십시오. – Laurence

+0

여전히 .. 'Class'Extended \ Laravel \ Response 'not found' – Alex

1

사실, 라이브러리를 확장 할 수있는 적절한 방법이 될 것이다 다음

  1. , 그것은 내부 application/libraries/
  2. response.php 만들기 클래스를 다음과 같이 연장 : application/config/application.php
  3. class Response extends \Laravel\Response
  4. 코멘트 'Response' => 'Laravel\\Response'

테스트를 거쳤습니다. 이제는 어떻게 할까?

관련 문제