2014-04-06 2 views
0

내가 가진 하나 개의 추상 클래스와 같은 :PHP : 클래스 이름없이 추상 클래스 함수를 호출

<?php 
    abstract class loader 
    { 
     public function using($path='') 
     { 
      return loader::import($path); 
     } 
     public static function import($path = '') 
     { 
      return 'a'; 

     } 
    } 

그리고 그것을 포함 후에, 내가 명령을 아래로 기능을 사용하여 호출
로더 : 사용();

클래스 이름없이() 함수를 사용하여 호출에 대한 해결책이 필요합니다.
using(); loader :: using() 대신에; "jimport"로 Joomla에 사용

IT 솔루션. 어떻게해야합니까 (짐 포트)?
Jimport는 추상 클래스의 함수이지만, 클래스 이름없이 전화 : 도와주세요.

+2

왜 당신이 필요합니까? 점은 무엇인가? – deceze

+0

그냥 학습.이게 나를 위해 큰 질문, Joomla 어떻게 할거야? –

+0

클래스 이름이 자동로드되지 않는 경우 Jimport 만 사용해야합니다. – Elin

답변

0

당신은 바로 가기 역할을 할 글로벌 네임 스페이스에 using 기능을 추가하는 시도 할 수 있습니다. 그건 그렇고, 난 loader::using 정적 함수를해야한다고 생각합니다.

<?php 
    abstract class loader 
    { 
     public static function using($path='') 
     { 
      return self::import($path); 
     } 
     public static function import($path = '') 
     { 
      return 'a'; 

     } 
    } 

    function using($path) { 
     return loader::using($path); 
    } 
+0

하지만 joomla jimport 정적 아니, 나는 Joomla에서 영감을 얻었다. 오프로 설정 이하, 또는이 경고 출력 PHP 5.3에서 실행하는 경우 –

+0

은, PHP는 정적으로 비 정적 방법을 사용 할 수 있지만, 그럼에도 불구하고, 나쁜 습관이다. BTW,이 특별한 경우에는 클래스 추상화가 필요하지 않습니다. – amenadiel

+0

는 최대한 멀리 볼 수있는, 최소한의 joomla 3, JLoader는 :: 가져 오기 정적 메서드이며, @amenadiel는 그의 대답에 설명 된 것처럼 정확히 불렀다. 나는 당신이 그 함수 jimport()를 놓쳤을지도 모른다고 믿는다; loader.php 파일의 맨 아래에있는 파일이 클래스 JLoader 외부에있는 것이 사실입니다.이 때문에이 함수는 정적이 아니며 JLoader :: first없이 호출 할 수 있습니다. http://www.reference.joomlademo.de/libraries/loader.php.source.txt – jonasfh