2012-07-07 5 views
0

나는 이것을 작동시킬 수 없습니다.클래스를 찾을 수 없습니다 PHP OOP

<?php 


     function __autoload($classname){ 
      include 'inc/classes/' . $classname . '.class.php'; 
     } 



__autoload("queries") 

$travel = new queries(); 
echo $travel->getPar("price"); 

?> 

그리고 이것은 inc/classes/queries.class.php 파일입니다.

<? 

class queries { 

     function getPar($par, $table='travel', $type='select') { 

      $result = $db->query(" 
      $type * 
      FROM $table 
      WHERE 
      $par LIKE 
      "); 
      while ($row = $result->fetch_assoc()) { 

       return " 
       $row[$par] 
       "; 
      } 

    } 
} 

?> 

"Class '쿼리를 찾을 수 없음"을 반환합니다. 그게 뭐가 잘못 됐어?

편집 :

치명적인 오류 :

도대체 라인 (5)에 /index.php에서 (이전에 /index.php:5에 선언) __autoload()을 재 선언 할 수 없습니다? 이미 자체 회선에서 선언 된 함수를 재 선언 할 수는 없습니다. 이유가 무엇입니까?

+0

는 "너무 많은 코드, 충분하지 산문"제한을 해결하기 위해 말도 안되는 내용으로 질문을 오염하지 마십시오. –

+0

@Michael 그럼 뭐할까요? 이 제한은 일반적으로 의미가 있지만이 경우 선험적으로 유효한 질문을하지 못하게합니다. –

+0

나는 그것을 편집했지만, 그것에 대해 걱정할 필요가 없습니다. – djpredator17

답변

1

를 참조하면 spl_autoload_register()을 활용하는 방법을 배워야한다 index.php 또는 bootstrap.php 파일에 오토로더를 등록하고 로더 당 한 번만 수행해야합니다 (이 기능은 y를 사용하면 여러 로더를 정의 할 수 있지만 SwiftMailer의 경우처럼 자체 오토로더가있는 제 3 자 라이브러리가있는 경우에는 사용됩니다.

P. 준비 문을 MySQLi 또는 PDO와 함께 사용하는 방법을 배우십시오.

업데이트 당신은 지금 당신이 유용하게 찾을 수있는 몇 가지, 여기, OOP를 배우고 있기 때문에

:

강의 :

책 :

+0

방금 ​​OOP로 시작 했으므로 준비된 명령문은 나중에 나올 것입니다. 하지만 제안에 대한 정말로 감사합니다 :) – djpredator17

+0

@ djpredator17, 당신을 도울 수있는 몇 가지 링크를 추가했습니다 –

+0

내가 적어도 두 번 할 것이 귀하의 게시물을 투표 수 있다면 :) 너무 많이 타이! – djpredator17

2

은 (클래스의 자동로드하지 않고) 그래서 시도 :

spl_autoload_register(function($classname){ 

    $filename = 'inc/classes/' . $classname . '.class.php'; 

    if (!file_exists($filename)){ 
     throw new Exception("Could not load class '$classname'.". 
          "File '$filename' was not found !"); 
    } 

    require $filename; 

}); 

그리고 당신 :

function __autoload($classname){ 
    include_once 'inc/classes/' . $classname . '.class.php'; 
} 
$travel = new queries(); 

가 대신 그 무서운 혐오의이 link

+0

제안한대로했으나 "클래스 쿼리를 찾을 수 없음"문제가 다시 발생했습니다. – djpredator17

+0

__autoload 함수를 제안했지만 function load를 사용하고 __autoload - var_dump ($ classname) - 경로에 문제가있을 수 있습니다. – yAnTar

+0

치명적인 오류 : 4 행의 inc/classes/queries.class.php에서 클래스 쿼리를 다시 선언 할 수 없습니다. 처음으로 선언 한 행 (두 번째 시간이 없습니다 ...) – djpredator17

0

당신에서이 줄을 제거 코드 __autoload("queries"), 당신은 자동 로더가됩니다 호출 할 필요는 없다 그것으로 부름 받다. f가 선언되지 않은 클래스를 만날 때마다 include 및 debug 대신 require_once를 사용하십시오. 경로가 맞는지 아닌지 확인하십시오.

관련 문제