[development] Extend database abstraction layer, to include table
creation.
Frando
frando at xcite-online.de
Sat May 13 17:30:36 UTC 2006
Bèr Kessels schrieb:
> Op zaterdag 13 mei 2006 14:50, schreef Dries Buytaert:
>
>> Hundreds of books have been written about PHP and MySQL. As a
>> newbie, you can buy these books and understand what Drupal's MySQL
>> schemas mean. If we add an extra abstraction layer, these books are
>> going to be less useful. Hence, we added a barrier.
>>
>> It does, however, help you write portable code, but that isn't
>> something most people are concerned about. Newbies want to write
>> code that works, and that they can understand. Being able to
>> understand something is very rewarding/motivating. Portability is
>> not their main concern. IMO.
>>
>
> There is a way inbetween this too. The Middle Road. And that is how Active
> Record works.
> Let us forget about OO vs non OO for a second and look at this:
>
> Comment.find_by_id(12)
> Comment.title = "Foo Bar"
> Comment.save!
>
> But you can also do:
> Comment.find(:first,
> :conditions => "id = 12")
> ..same as above ..
>
> And even:
> Comment.find_by_sql("select * from comments where id = 12")
> ..same as above..
>
> Now. The point is that in your Day to Day work, you need not bother about SQL.
> But that is not the same as "not being allowed to use SQL".
>
> David Heinemeier Hansson:
> "Some object-relational mappers seek to eradicate the use of SQL entirely..."
> "..Active record does not. It was built on the notion that SQL is neither
> dirty nor bad, just verbose in the trivial cases."
> "... Therefore, you shouldn't feel guilgy when you use find_by_sql() to handle
> either performance bottlenecks or hard queries. Start out using the
> object-oriented interface for productivity and pleasure, and then dip beneath
> the surface for a close-to-the-metal experience when you need to".
>
> Which IMO is how we should treat Drupals "abstraction layer" too.
>
> Not try to pull out the SQL etc for sake of abstraction. Not making stuff more
> OO for the sake of portability. But only to make working on Drupal more fun,
> faster, and more productive.
>
> We should really try to avoid becoming a platform that you "fight against to
> get stuff done your way". It should be a fun and productive thing to do,
> working on a Drupal site. Working with Drupal should leave you all warm and
> fuzzy. With a "wow! this is very smart and usefull" erlebnis every hour.
>
> Instead of a "why the *** cant I just use foo bar here. Wy the *** do i need
> to read sqlApiLayers introductions and manuals when all I need is to store a
> value."
>
> I am not saying this is the case now. But I fear that if we continue rolling
> down the road of more complexity and more abstraction, without remaining
> pragmatic, we are going to loose precious developers.
>
> Bèr
>
>
+1.
I think, ActiveRecords in drupal would just be perfect. For my last
project, I used a php framework called CakePHP [1]. It's quite similar
to RoR, but written in php. It implents a lot of ActiveRecords stuff,
and I never created a web app faster.
Especially for simple, every-day-work, for example by coding quite a
simple data managment module, ActiveRecords saves not only a lot of
code, but also a lot of time.
I can't see any reasons against including ActiveRecords in drupal,
espacially because no one will be forced to use them, but a lot of
people will.
best regards,
frando
[1] www.cakephp.org
More information about the development
mailing list