Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PhpED i Doctrine ORM

[es] :: PHP :: PhpED i Doctrine ORM

[ Pregleda: 2336 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
*.ns.ac.yu.



Profil

icon PhpED i Doctrine ORM24.11.2009. u 13:48 - pre 175 meseci
Pozdrav,
ima li neko iskustva u integraciji i podesavanju Doctrine ORM-a sa PhpED IDE-om? Projekat je vec u toku tako da je koriscenje drugih alata (Zend) iskljuceno. Koristim Smarty template i MySql DB ako je to bitno. Primer bi bio dobar.

hvala
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: PhpED i Doctrine ORM24.11.2009. u 16:30 - pre 175 meseci
A u kom smislu integracija sa tim IDE-om? Jel možda intellisense PhpED-a nije kompatibilan sa Doctrine-om, ili tako nešto? Ja mislim da od svih IDE-a, jedino najnovija verzija NetBeans-a ima autocompletition podršku za Doctrine.
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
*.ns.ac.yu.



Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 12:41 - pre 175 meseci
Pa, ne kapiram ja bas kako se ovo podesava za PhpED konkretno. Nasao sam neki tutorial, u stvari, na netu postoji gomila tutoriala za Zend i Doctrine a nista za PhpED i Doctrine...medjutim, ja sam ukljucio u moj projekat Doctrine direktorijum sa doctrine.php fajlom i LIB dir-om koji drzi definicije klasa (napravio dir u koji sam stavio ta dva fajla) . Interesantna stvar je ta da intelisense radi bez problema sa Doctrine metodama, ali kad probam da otvorim konekciju ka bazi, on mi javi da Class 'Doctrine_Manager' not found....Naravno, ovo je samo prvi korak, do upita nisam ni stigao. Navodio sam sve moguce putanje i nista. Zato pitam, da li je to prosto kopiranje zaista dovoljno ili ima nekakvih drugih podesavanja koja su mi promakla.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 13:38 - pre 175 meseci
Kad kažeš "Zend", jel misliš na Zend kao IDE - Zend Studio ili Zend kao radni okvir - Zend Framework?

Da, postoji dosta primera na netu kako integrisati Doctrine u neki Zend Framework-based projekat, al' ne znam stvarno dal' postoje neki tutorijali kako izvršiti integraciju u neki IDE (a i zašto bi uopšte postojali takvi tutorijali).

Čini mi se da je tebi u stvari problem da integrišeš Doctrine u taj tvoj projekat, a pod tim ne mislim da integraciju u IDE u kome radiš. Jedna od osnovnih stvari koju treba da uradiš je da obezbediš autoload-ing sistem u tom tvom projektu, čak i onaj bazičan, korišćenjem "magične" funkcije __autoload(). A možeš naravno i ručno da registruješ Doctrine-ov autoloader, kao što je i objašnjeno u dokumentaciji. Taj deo bi trebao da se nalazi u nekom bootstrap fajlu tvoje aplikacije. Doctrine, kao i svaka bolja, naprednija PHP biblioteka prati PEAR naming konvenciju, i forsira taj čuveni "lazy loading" sistem, tako da je autoloading nešto što moraš da obezbediš...
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
93.87.102.*



Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 16:18 - pre 175 meseci
Ma zend nije bitan, mada, u pravu si, bio sam neprecizan sa pitanjem. Sustina je ukljuciti Doctrine u postojeci projekat, a u okviru PhpED IDE-a. Link koji si mi ostavio sam naravno pogledao, jos ranije, u stvari to je bilo prvo mesto koje sam posetio. Bootstrap file....stoji u root-u projekta, stoji u stvari u index.php strani projekta, i mislim da je to u redu, ta strana ce se sigurno ucitati.

**
* Bootstrap Doctrine.php, register autoloader specify
* configuration attributes and load models.
*/

require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();

s tim da je prva linija koda zamenjena sa:
require_once($_SERVER["DOCUMENT_ROOT"] . '/lib/doctrine/Doctrine.php'); da bi naveo putanju do mog dir-a sa projektom.
Sustina je da se nista nije promenilo. Kad probam da pozovem Doctrine_Manager::connection(...) kompajler javi da ne moze da nadje klasu Doctrine_Manager. Ja nadjem gde je deklaracija te klase, navedem eksplicitno putanju do nje , kompajler javi da ne moze da nadje Doctrine_Configurable klasu koju predhodna klasa nasledjuje. Navedem putanju i do ove klase kompajler javi da ne moze da nadje klasu koju ova nasledjuje...i tako u beskonacnost. To je problem.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 17:20 - pre 175 meseci
Pa ne bih baš rekao da ćeš sa $_SERVER["DOCUMENT_ROOT"] dobiti željenu putanju... Dobra praksa je da negde u okviru svoje aplikacije, najčešće u bootstrap fajlu, definišeš tu neku osnovnu putanju, npr. ovako:
Code:
define('BASE_PATH', realpath(dirname(__FILE__)));

Takođe, ne bi bilo loše da ceo taj folder sa 3rd party lib-ovima staviš na include_path:
Code:

set_include_path('.' . PATH_SEPARATOR . BASE_PATH . '/lib/vendor' 
    . PATH_SEPARATOR . get_include_path());

E ja sad ne znam dal' ti Doctrine klase držiš u još nekom podfolderu, ili ti je osnovna, Doctrine klasa u root-u tog lib/vendor foldera? Meni je nekako logičnije da ti je onaj folder Doctrine i fajl Doctrine.php budu u root-u tog vendor foldera... A ako to ipak nije slučaj, onda moraš da dodaš i putanju do tog podfoldera u include_path.

I sada ako još dodaš ovako nešto u tvoj bootstrap:
Code:
function __autoload($className) 

    include_once(str_replace('_', '/', $className) . '.php');
}

... nema potrebe da radiš nijedan od onih koraka iz Doctrine "Getting started" dokumentacije.

Drugo rešenje bi bilo da ostaviš onu definiciju BASE_PATH-a u tvom bootstrap-u (to je inače apsolutna putanja do foldera u kome se nalazi taj bootstrap fajl), a da onda $_SERVER["DOCUMENT_ROOT"] zameniš upravo sa BASE_PATH konstantom. I sad naravno moraš da registruješ Doctrine autoload za __autoload implementaciju: spl_autoload_register(array('Doctrine', 'autoload'));.

Ja mislim da bi trebao da probaš sa ovim prvim načinom...
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 17:58 - pre 175 meseci
@Ajvan

Jesi li nekad ranije goristio doctrine, bez ili sa nekim IDE-om za php ?
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
93.87.102.*



Profil

icon Re: PhpED i Doctrine ORM25.11.2009. u 20:20 - pre 175 meseci
Nisam, nisam se do sada bavio php programiranjem...ali ako je u pitanju ORM, radio sam malo sa LINQ-om u .net-u. U sustini, brzo sam se snasao, nije nista posebno, a i projekat na kome trenutno radim je relativno mali, ima najvise 10-tak stranica, tako da mi je idealan za ucenje i vezbu.
Nikola, hvala ti na dosadasnjoj pomoci, probacu ujutru, pa se javim sa novim pitanjima :)


[Ovu poruku je menjao Ajvan dana 26.11.2009. u 11:26 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
*.ns.ac.yu.



Profil

icon Re: PhpED i Doctrine ORM26.11.2009. u 10:28 - pre 175 meseci
Nikola,
ja vise zaista nemam predstavu o cemu se ovde radi, sta god da navedem za putanju, kreiram bootstrap.php, uvek je ista greska...ne moze da nadje klase koje su definisane unutar LIB direktorijuma (Doctrine lib direktorijuma, pa onda opet direktorijum Doctrine - malo je nesrecno nazvano).

slika strukture je nekim cudom (citaj mojom greskom) zavrsila u predhodnoj mojoj poruci.

Kako treba da izgleda famozni bootstrap.php fajl, i odakle ga pozivam, tj. ukljucujem?
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: PhpED i Doctrine ORM26.11.2009. u 12:55 - pre 175 meseci
Citat:
Ajvan: ja vise zaista nemam predstavu o cemu se ovde radi, sta god da navedem za putanju, kreiram bootstrap.php, uvek je ista greska...ne moze da nadje klase koje su definisane unutar LIB direktorijuma (Doctrine lib direktorijuma, pa onda opet direktorijum Doctrine - malo je nesrecno nazvano).

Pa sa tako neobičnom strukturom direktorijuma (koju si attach-ovao u tvom prethodnom post-u) ni najsufisticiraniji autoloading ne bi izašao na kraj.

I ja sad tu nigde ne vidim onaj folder "vendor" kojeg si spominjao u prethodnim post-ovima... Nego, da bi isprobao onaj prvi način koji sam ti predložio, najpre obiši to "vendor" iz podešavanja include_path-a, da taj deo izgleda ovako:
Code:
set_include_path('.' . PATH_SEPARATOR . BASE_PATH . '/lib' 
    . PATH_SEPARATOR . get_include_path());

I onda samo premesti folder Doctrine i fajl Doctrine.php u root tog (glavnog) foldera lib, i to bi onda trebalo da bude ok. I naravno, onu definiciju funkcije __autoload() ostavi netaknutu.

edit: evo i slikovitog uputstva:


[Ovu poruku je menjao Nikola Poša dana 26.11.2009. u 14:06 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
*.ns.ac.yu.



Profil

icon Re: PhpED i Doctrine ORM26.11.2009. u 13:18 - pre 175 meseci
:)
jeste struktura je 'neobicna'. vendor je izbacen, to sam pomenuo u nekom od predhodnih postova, nije ni bitno.
malo sam citao u medjuvremenu, i za delic sam uvecao svoje skromno znanje o php-u, verzija 5 (da li sam?).

funkcija __autoload(...) - ako imamo poziv klase koja nije deklarisana u datom php fajlu a nije ni include-ovana u zaglavlju istog, poziva se ta f-ja koja treba da bude poslednje mesto pre pojave greske gde cemo pogledati da li je klasa definisana. E sad, ta f-ja najcesce stoji u root-u projekta, bilo u index.php fajlu ili u posebnom bootstrap.php fajlu koji se onda ukljuci u index.php. Razlog tome je da budemo sigurni da ce se taj fajl ucitati.
Ali, sada dolazimo do problema. Kada iz drugog php fajla pokusam da pozovem klasu koja nije definisana u samom tom fajlu a nije ni include-ovana u njegovom zaglavlju, zar onda ta __autoload() f-ja ne bi trebalo da bude pozvana??? Ocigledno se ne poziva kod mene. Pitanje je da li treba da include-ujem index.php ili bootstrap.php u svaki fajl koji nema deklaraciju ni include klase koju poziva (a sto mi je potpuno besmisleno, jer onda ne vidim svrhu __autoload() f-je)??? U objasnjenju autoload f-je stoji da se poziva AUTOMATSKI svaki put kada se koristi klasa/interfejs koji nije jos definisan.
e sad, ja sam ovo napisao ne da bih ti objasnjavao nesto jer bolje od mene vladas materijom, nego je ovo ono sto sam ja razumeo vezano za autoload f-ju...ili ja tu nesto nisam dobro razumeo.

[Ovu poruku je menjao Ajvan dana 26.11.2009. u 14:29 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: PhpED i Doctrine ORM26.11.2009. u 14:07 - pre 175 meseci
Za ovaj prvi deo o autoload f-ji si donekle u pravu. U stvari, i za ovo što si dalje naveo si u pravu.

Gledaj, ne znam kako si organizovao samu aplikaciju, dal' ideš sa nečim što liči na MVC arhitekturu ili tako nešto. Uglavnom, bootstrap skript bi trebao da sadrži neku inicijalizaciju cele aplikacije, nešto što je zajedničko za svaki zahtev, itd. Ako je kod tebe npr. svaki zahtev usmeren na index.php, onda je dovoljno da samo u njega include-uješ taj bootstrap, u kome se nalazi i __autoload() funkcija. A ako imaš pojedinačne skriptove za svaku stranicu aplikacije (npr. index.php, download.php, kontakt.php, itd.), onda je naravno logično da u svaki od tih skriptova "uključiš" bootstrap.php. Takođe, ako imaš neke ajax handler-e, i u njih takođe moraš da include-uješ bootstrap, ako planiraš da koristiš stvari koje si u njemu inicijalizovao (autoloading, db adapter, i slično).
 
Odgovor na temu

Ajvan
Ivan Jovanovic
Novi Sad

Član broj: 10783
Poruke: 71
*.ns.ac.yu.



Profil

icon Re: PhpED i Doctrine ORM27.11.2009. u 07:36 - pre 175 meseci
he,
uspeo sam, jasno mi je sad sve sta se desava....bio si u pravu, samo sam dodao bootstrap fajl u klasu koja poziva doctrine f-je (a pre toga sam u bootstrap.php fajlu definisao ono sto si napisao, naravno, ja sam zeznuo putanje i zakomplikovao zivot sebi) i proradilo je. Uspeo sam koristeci DQL da fetch-ujem jedan record iz baze, to mi je dovoljno da vidim da radi. Sad je dalje pesma.
Hvala ti puno na pomoci, i izvini na maletretiranju....
pozdrav
 
Odgovor na temu

[es] :: PHP :: PhpED i Doctrine ORM

[ Pregleda: 2336 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.