[CI] DataMapper

  • Goedenacht,


    Ik ben langzaam aan het ontdekken hoe CodeIgniter (CI) werkt, nu wil ik een dropdown lijst maken met landen. Hiervoor maak ik gebruik van de volgende tutorial. Ik heb alleen werkelijk geen idee wat een DataMapper is en hoe dit precies werkt, verschillende pagina's gelezen maar wordt er niet duidelijker op.


    Heeft iemand hier ervaring in, en is er een pagina die wat duidelijker kan uitleggen wat dit precies is, en wat het doet binnen CodeIgniter?



    Edit:
    Heb het inmiddels met een Helper opgelost, mochten er toch nog tips zijn hoor ik ze graag.

  • Een datamapper is het object wat tussen je database (je model) en je controller in hangt. Het idee achter een datamapper is het dat je een object creëert waarin je functies stopt om bepaalde handelingen de verrichten in je database. Zeg dat je zoals je aangeeft een landen tabel hebt waar je gegeven uit ophaalt en terug in stopt dan heb je een datamapper met wellicht de functies:


    • readCountry(id)
    • readCountrys(void, array id)
    • updateCountry(id, array data)
    • updateCountrys(array id, array data)
    • deleteCountry(id)
    • deleteCountrys(array id)
    • createCountry(array data)


    Het feit dat je niet rechtstreeks een database query draait maar via een datamapper werkt heeft als handigheid mocht je bijvoorbeeld ooit de tabel wijzigen dan hoef je alleen je datamapper aan te passen om het op heel je website aan te passen. Daarnaast als je een andere database engine erachter hangt hoef je ook alleen je datamapper aan te passen.


    Met CI doe je al voornamelijk datamapping doormiddel van je model. Binnen je moddel map je alle data die je nodig hebt uit een specifieke tabel of een combinatie van tabellen en kan je uiteraard ook functies toevoegen die je anders via een helper zou doen. (readTop10Countrys() bijvoorbeeld).

  • @Patrick
    Bedankt voor de heldere uitleg, de landen staan inderdaad in een database. Deze wil ik later nog samenvoegen met een provincie/staat koppeling, voor nu is land belangrijk.


    Ik ga het toch maar weer omzetten in een DataMapper aangezien dit later goed van pas kan komen, dan hoef ik dit niet allemaal achteraf te doen.


    p.s. ik krijg tips om Laravel te gebruiken, vind het alleen nog erg omslachtig om te installeren. Wie van jullie gebruikt het, en wat vinden jullie de voordelen hiervan.


    Ik ben me ervan bewust dat oude CodeIgniter programmeurs overstappen, zie alleen geen voor of nadelen om CodeIgniter te negeren, zie via Github dat er toch nog redelijk actief op verbeterd wordt.


    Hoor het graag!

  • Laravel is een fork van CI, of ieder geval dat is het ooit geweest, en is sindsdien zwaart door ontwikkeld waar CI destijds wat achter bleef lopen. Nu CI overgenomen is door een nieuw bedrijf en CI 3 is uitgebracht is het grote gat tussen laravel en CI voor een groot gedeelte verdwenen.


    Beide treffen het zelfde doen en beide zijn ze ontstaan vanuit dezelfde basis waar CI een bepaalde tak programming heef en laravel ook.


    Laravel deploy je middels composer wat voornamelijk handig is op unix machines (Op windows kan het uiteraard ook maar vind ik zelf minder fijn werken). Mocht je het op een unix server hebben draaien dan is composer makkelijk te installeren en te gebruiken.


    Voordeel van composer is telkens als je LaravEl of CI installeert, installeer je de laatste versie en hoef je daar geen zorgen over te maken, nadeel is dat eventueel programmeer stukken die je reeds hebben gedaan niet meer compatible zijn met de nieuwste versie van het systeem.


    Mijn persoonlijke voorkeur gaat uit naar laravel omdat ik net zoals jij aangeeft een tijd terug buiten CI om ben gaan kijken naar een nieuw systeem die wel volledig werd door ontwikkeld op dat moment. De terug stap naar CI zal ik niet meer zo snel maken puur vanwege het feit dat ik nu gewend ben aan laravel.


    Het komt eigenlijk net als elk ander MVC model binnen PHP op aan wat je zelf het fijnst vind werken. En uiteraard als je de meest uitgebreide variant wilt hebben dan zal je eens naar Zend moeten gaan kijken.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!