2010-02-20 1 views
3

PHP에서 MVC를하고 있는데, 컨트롤러에 list() 메소드를 가지고 싶습니다. URL에 엔티티 /리스트/parent_id가 있고 그 부모에 속한 모든 "x"가 표시됩니다.PHP에서 메소드 이름을 "이스케이프 (escape)"하여 예약 된 키워드와 충돌하는 메소드 이름을 가질 수 있습니까?

그러나 PHP 예약어이므로 list()라는 메서드를 사용할 수 없습니다.

예를 들어 VB.Net에서 예약 된 키워드와 충돌하는 이름이 필요한 경우 [예약 된 이름]으로 묶을 수 있습니다.
SQL에서는 동일한 작업을 수행 할 수 있습니다.
MySQL에서는 백틱을 사용합니다.

PHP에서 "키워드가 아니라 식별자로 처리합니다"라는 구문이 PHP에 있습니까?

(참고 :.. 내가 목록() 메소드를하지 않고이 작업을 수행하기 위해 경로를 사용할 수 있습니다 알고 나는 또한 단순히 다른 액션 뭔가를 호출 할 수 있습니다 문제는 PHP가 탈출 이런 종류의 제공 여부)

답변

2

로를 변수 이름은 괄호 기호를 사용할 수 있습니다 :

${'array'} = "test"; 
echo ${'array'}; 

그러나 PHP는 함수 이름을 이스케이프하는 방법을 제공하지 않습니다. 당신이이 문제를 얻기의 '사용자 정의'방법을 원하는 경우

,이 댓글을 확인 : 당신은 당신의 기능을 구현하는 개인 또는 공용 _list() 메소드를 호출 __call() 방법을 사용할 수 있습니다

http://www.php.net/manual/en/reserved.keywords.php#93368

+0

구문 분석 오류 –

+0

감사합니다! 그 PHP.net 기사가 손톱. 불행히도, CakePHP는 단지 Controller를 호출하려고하는 것이 아니라 Controller의 모든 메소드를 열거하고 있습니다. 오, 음, 목록에 synonims를 찾지 마라 :-) –

5

.

/** 
* This line for code assistance 
* @method array list() list($par1, $par2) Returns list of something. 
*/ 
class Foo 
{ 
    public function __call($name, $args) 
    { 
     if ($name == 'list') { 
      return call_user_func_array(array($this, '_list'), $args); 
     } 
     throw new Exception('Unknown method ' . $name . ' in class ' . get_class($this)); 
    } 

    private function _list($par1, $par2, ...) 
    { 
     //your implementation here 
     return array(); 
    } 
} 
관련 문제