Citat:
dakipro: Offtopic, kad vec kreces sa doctrine-tom, sto ne krenes sa 2.0 verzijom?
Mislim, jel postoji neki konkretan razlog, ono, nije se dobro pokazao, ili je kompatibilnost, ili verzija phpa u pitanju, ili nedostatak dokumentacije ili...?
Ja sam mu preporucio 1.2 iz vise razloga:
1. active record je jako jednostavan
2. ne mogu mu pomoci oko 2.0 jer je ne koristim
3. mislim da ce pre nauciti OOP ako koristi active record
E sad, ovo oko broja 3: ti znas da ja ne smatram OOP nesto ima metode tipa function nesto($param1, $param2, $param3... $param_x) . To nije objekat nego 'function holder' po meni, zaista; testove za ovo je nemoguce napisati zbog broja kombinacija ulaznih parametara, gresaka koje treba uhvatiti... itd. pa ni refactoring nije moguc.
Mislim da ce ga active-record pre naterati da pise kvalitetniji kod jer mu sam ORM pomaze oko toga. Ako uzmemo definiciju da je objekat nesto sto postoji, u AR pattern-u objekat postoji kao row u tabeli. Nadam se da me razumes; pogledaj
ovaj primer gde ces videti ultra-kratke metode koje se mogu vise puta koristiti u razlicitim delovima klase.
Za doctrine 2.0; nisam siguran, ali imam utisak da daje previse odresene ruke i da lako moze da se ode u onu pricu o bezbroj parametara koji se posle zavrse sa nekoliko 'global' promenljivih itd. Pocetniku nikako ne bih preporucio da krene odatle.
Citat:
Znaci sam start pa cu ja da probam nesto simple da uradim da testiram....
Evo ti nesto sto ja koristim; imaj na umu da ovo NIJE najbolje resenje, prepisao sam ga sa neta i mrzi me da menjam. Posluzice ti za pocetak:
Code:
define('SANDBOX_PATH', ROOT . '/libs/doctrine123');
define('DOCTRINE_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'lib');
define('DATA_FIXTURES_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'fixtures');
define('MODELS_PATH', ROOT . DIRECTORY_SEPARATOR . 'models');
define('MIGRATIONS_PATH', ROOT . DIRECTORY_SEPARATOR . 'UPDATE/migrations');
define('SQL_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'sql');
define('YAML_SCHEMA_PATH', ROOT . DIRECTORY_SEPARATOR . '_schema');
require_once(DOCTRINE_PATH . DIRECTORY_SEPARATOR . 'Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
spl_autoload_register(array('Doctrine_Core', 'modelsAutoload'));
$manager = Doctrine_Manager::getInstance(Doctrine_Core::ATTR_QUOTE_IDENTIFIER , true);
$manager->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);
$manager->setAttribute(Doctrine_Core::FETCH_LAZY, true);
$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, Doctrine_Core::VALIDATE_ALL);
$manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
$connection = $manager->openConnection(DSN, 'doctrine');
$connection->setCollate('utf8_unicode_ci') ;
$connection->setCharset('utf8') ;
Doctrine_Core::loadModels(MODELS_PATH, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
ROOT je direktorijum gde je tvoj program, tj. tu gde ti je index.php, DSN ti je recimo ovo: define('DSN', 'mysql://root:@localhost/moja_baza');
Citat:
Napravim folder na serveru doctrine_test / lib / doctrine
Zasto radis na serveru a ne na localhost-u?