2014-04-22 5 views
1

cakephp와 관련없는 일반 PHP 코드에서 Cakephp 클래스 (모델)를 사용하고 싶습니다. 나는거야외부 PHP 코드에서 Cakephp 클래스 사용하기

...

include('/lib/Cake/Core/App.php'); 
App::uses('Business', 'Model'); 
$b = new Business(); 

마지막 줄은 나에게 오류를 제공하고, 또한 성공하지 몇 가지 해결 방법을 시도했다 :

나는이 시도했지만 작동하지 않았다 좋은 대답에 대한 감사의 말을 전하십시오.

편집 : 다음은 내가 찾은 해결책입니다! (감사합니다, @Burzum!) :

I 복사 웹 루트/웹 루트/cake_setup.php에 index.php를하고 제거 마지막 몇 줄에만 물건을 포함하고 실제로는 아무것도 실행하지 않도록 :

이어서

App::uses('Dispatcher', 'Routing'); 

$Dispatcher = new Dispatcher(); 
$Dispatcher->dispatch(
    new CakeRequest(), 
    new CakeResponse() 
); 

, 이 법과 외부 PHP 코드에서 외부 PHP 코드 :

if (!defined('DS')) { 
    define('DS', DIRECTORY_SEPARATOR); 
} 

include_once(__DIR__ . DS . '..' . DS . 'v2' . DS . 'app' . DS . 'webroot' . DS . 'cake_setup.php'); 
App::uses('AppModel', 'Model'); 
App::uses('Business', 'Model'); 

$b = new Business(); 

고마워요!

+0

참고로 @burzum은 ... 그 작품이 어떻게 자신의 작품으로 만들어 지는지 더 잘 이해하려고 노력합니다. –

+0

업데이트 된 답변을 확인하십시오. 내 생각에는 거기에 꽉 끼지 않는 다른 (IMHO) 더 나은 솔루션이 있다고 생각합니다. 귀하의 케이크 코드에 다른 애플 리케이션. – burzum

답변

2

CakePHP는 조각별로 사용하지 않습니다. 독립형 ORM을 찾고 있다면 독트린이나 추진력을 찾으십시오.

계속 사용해도되지만 프레임 워크의 부트 스트랩 프로세스 (webroot/index.php에서 수행하는 작업 참조)를 실행하고 클래스 로더를 등록하고 코어 포함 경로를 지정해야합니다.

편집 :

오늘 다시이보고있는 동안, 나는 여기에 적절한 솔루션이 아닌 다른 케이크 응용 프로그램이 소비 할 수있는 API를 통해 CakePHP의 응용 프로그램에서 물건을 당신의 필요를 노출하는 것입니다 생각합니다. CakePHP를 사용하면 REST를 매우 쉽게 할 수 있습니다. 당신은 CakePHP 앱에 다른 앱을 단단히 묶지 않습니다. 그 다음 다른 비 Cake 앱을 건드리지 않고도 3.0으로 업그레이드 할 수 있습니다.

+0

고마워요.하지만 편집시 제공되는 솔루션은 모든 메소드에 대해 API를 열어야하며 모든 기존 메소드를 활용하는 것을 선호합니다. – Nimo

+0

아니요, 케이크 컨벤션을 따르지 않거나 다른면에서 잘 작성되지 않은 코드를 작성한다는 점을 제외하면 이미 가지고있는 것을 다시 사용할 수 있습니다. http://book.cakephp.org/2.0/ko/development/rest .html – burzum

+0

링크를 가져 주셔서 감사합니다.하지만 ** 모델 ** 메소드를 사용하고 컨트롤러 작업을 사용하고 싶습니다. 내가 게시 한 솔루션 이외의 다른 방법이 있습니까? – Nimo