2010-09-01 15 views
5

मैं सिर्फ सिद्धांत के साथ पकड़ने और मॉडलों के सुझाए गए आलसी लोडिंग का उपयोग कर रहा हूं।सिद्धांत आलसी लोडिंग

<?php 
require_once(dirname(__FILE__) . '/libs/doctrine/lib/Doctrine.php'); 
spl_autoload_register(array('Doctrine', 'autoload')); 
$manager = Doctrine_Manager::getInstance(); 
$manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true); 
$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE); 
Doctrine_Core::loadModels(array(dirname(__FILE__) . '/models/generated', dirname(__FILE__) . '/models')); //this line should apparently cause the Base classes to be loaded beforehand 

मेरे मॉडल और आधार वर्ग सभी सिद्धांत द्वारा बनाया गया है: ट्यूटोरियल के अनुसार, मैं एक सिद्धांत बूटस्ट्रैप फ़ाइल बनाई है।

<?php 
require_once('doctrine_bootstrap.php'); 

$user = new User(); 
$user->email = '[email protected]'; 
echo $user->email; 

बहरहाल, यह निम्न त्रुटि उत्पन्न करता है: अगर मैं स्पष्ट रूप से BaseUser.php और उपयोगकर्ता की आवश्यकता होती है,

Fatal error: Class 'User' not found in E:\xampp\htdocs\apnew\services\doctrine_test.php on line 4 

हालांकि

इस प्रकार मैं भी एक साधारण परीक्षण फ़ाइल बना ली है .php फ़ाइलों, तो यह किसी भी त्रुटि

<?php 
require_once('doctrine_bootstrap.php'); 
require_once('models/generated/BaseUser.php'); 
require_once('models/User.php'); 

$user = new User(); 
$user->email = '[email protected]'; 
echo $user->email; 

तो बिना ठीक काम करता है, ऐसा लगता है कि Doctine औ नहीं है मॉडल को सही ढंग से लोड करने के लिए। मैं क्या खो रहा हूँ?

उत्तर

2

ठीक की आवश्यकता के बिना समस्या ठीक होती है,:

spl_autoload_register(array('Doctrine_Core', 'modelsAutoload')); 

और फिर ऑटो लोड हो रहा है उम्मीद से काम करता है के रूप में

0

User.php मॉडल में शीर्ष पर BaseUser.php क्लास की आवश्यकता होती है। चूंकि उपयोगकर्ता वर्ग BaseUser.php

को बढ़ाता है, तो मुझे यह समस्या है और इससे हल हो गया है। मुझे दिलचस्पी होगी यदि ऐसा कुछ है जो मुझे याद नहीं है, जिसमें मैन्युअल रूप से शामिल नहीं है। कि एक शॉट दे दो और इसलिए आप बूटस्ट्रैप फ़ाइल में निम्न पंक्ति की जरूरत देखें कि क्या वह User.php

+0

वह आंशिक रूप से काम करता है, लेकिन मुझे अभी भी मेरी doctrine_test.php फ़ाइल के शीर्ष पर_ऑन ('मॉडल/User.php') की आवश्यकता है – JonoB

2

आपका दृष्टिकोण सही है के बाद से सिद्धांत अपने आप लोड हो रहा है functionallity है:

Doctrine::loadModels('models'); 
Doctrine::loadModels('models/generated'); 
Doctrine::loadModels('models/tables'); 
... 

यह तो आप फ़ोल्डर जोड़ने की जरूरत है पुनरावर्ती नहीं है कि अपने मैप किए गए/प्रबंधित मॉडल शामिल करें।

संबंधित मुद्दे