2008-10-21 7 views
1

이전 질문에서 다양한 ORM 라이브러리에 대해 질문했습니다. Kohana는 ORM을 위해 매우 깨끗하지만 기능적으로 보입니다. 나는 이미 내가 작업하고있는 MVC 프레임 워크를 가지고있다. 프레임 워크로 실행하고 싶지 않으면 DB 및 ORM 기본 클래스 파일을 제공하기 위해 포함 할 올바른 파일 세트는 무엇입니까?전체 프레임 워크를 사용하지 않고도 PHP에서 ORM 용 Kohana 라이브러리를 설치할 수 있습니까?

업데이트 :

내가 뛰어와 ORM 소스 코드를 찾기 시작

.. 한가지는 나에게 즉시 혼란이었다 .. 모든 ORM 클래스는 _CORE 즉 ORM_Core ORM_Iterator_Core가 추가 된 클래스 이름,하지만 코드가 어디에서나 ORM 클래스를 확장하고 있습니다. 문제는, 나는 6 가지의 다른 방법으로 전체 코드베이스를 검색했다. 그리고 나는 일반 ORM 클래스 def 나 ORM 인터페이스 def 또는 아무것도 본 적이 없다. 누군가 그 마법이 일어나는 곳에서 나를 계몽 할 수 있을까?

답변

5

왜 다만

가 않습니다 모든 사람이 나중에 찾을 수 있도록 누군가가 관심이 경우

, 여기 나의 발견을 문서화하고있어

class ORM extends ORM_Core {} 

코드 어딘가에 있습니까? 이렇게하면 로더 코드를 사용할 필요가 없습니다.

또한 Kohana_Exception, 데이터베이스 라이브러리 (및 appropraite 드라이버), Kohana :: config(), Kohana :: auto_load(), Kohana :: log() 메서드 (해당 Database.php 검색)가 필요합니다.

Kohana는 위대한 MVC 프레임 워크이지만 실제로 그런 식으로 분해 될 수 있도록 설계되지 않았습니다. Doctrine, 또 다른 PHP 용 ORM (독립형으로 설계된 것임)을 조사하고 싶을 수도 있습니다.

+0

그래, 맞습니다. 코드를 파헤쳐 내가 필요한 것을 찾으십시오. 필요한 include 파일이 맨 위에 "필수"가 아니기 때문에 약간 어렵습니다. 그러나 무료 코드를 얻을 때 불만은 없습니다. – Zak

3

이 Kohana 마술을 정의 할 수 있도록, _Core의 확장자에 정의 된 클래스는

즉 ORM_Core가 존재하는 클래스로 존재하지 않는 경우 있도록 Kohana 마법 클래스 로딩을 사용하지만, ORM하지 않는 것으로 나타났다 ORM 클래스 패키지가 100 % 마법 클래스 로딩을 사용하기 때문에.

From Kohana.php in the system directory: 

<-- snip if ($extension = self::find_file($type, self::$configuration['core']['extension_prefix'].$class)) 
{ 
// Load the extension 
require $extension; 
} 
elseif ($suffix !== 'Core' AND class_exists($class.'_Core', FALSE)) 
{ 
// Class extension to be evaluated 
$extension = 'class '.$class.' extends '.$class.'_Core { }'; 
--> 

<-- snip 

// Transparent class extensions are handled using eval. This is 
// a disgusting hack, but it gets the job done. 
eval($extension); 

--> 

을 따라서는 평가가 ..