Hi!
I'm an interested student with a project idea for the PHP.net Google
Summer of Code.
I'm thinking about a native ( compiled from C ) ORM extension for PHP. I
don't need to explain how useful and important it is in modern web
applications / frameworks.
My goal is a native php extension that
- is efficient / high performance (thanks to good application design
and native code) - has a really good API (thanks to PHP5's extensible object modell)
- works with all major DBMSs (by using PDO)
- is flexible, so with thin wrapper classes it could be a drop-in
replacement for any framework's ORM module.
The concept is object persistence (somewhat similar to Hibernate for
Java). I think object persistence is the most simple, clean and usable
ORM concept, however it is the hardest to implement especially in pure
PHP code (no access to PHP5's internal object modell).
So what do you think? Is it a good project for SoC?
About me: I'm 19 year old, a student at the Budapest University of
Technology and Economics on the IT department ... and as you have
already discovered, not a native English speaker.
Adam Banko
Hey Adam,
I think this project would be great for PHP, and hopefully upon stable release
it would be better than the current Great Satan (Hail Satan! Glory be upon his
name and wretched be his victims) that currently rules the ORM world.
It is one exercise that I looked into to learn PHP extension building, but I
ventured too far into the dark forest of PDO and fled for fear of my mortal
soul. Reflection extension is a like a black hole for sucking in n00b souls who
dare try to comprehend its mass l33tness.
(The above might come off as sarcasm, but I'm totally serious. Only Gods of man
would be able to maintain the aforementioned extensions or at least ones with
more experience with C.)
If you get it started, I would like to help you maintain it after the Summer of
Code project. I have other projects which would take precedence, but I think
this would make PHP even better.
You don't have to work directly with PDO (as I had thought), just do as SDO
does, and allow for a PDO object to be passed through the ORM constructor or
method. But you probably already knew this.
Hey, good luck getting accepted and to the completion of the project.
Jacob Santos
Hi!
I'm an interested student with a project idea for the PHP.net Google
Summer of Code.I'm thinking about a native ( compiled from C ) ORM extension for PHP. I
don't need to explain how useful and important it is in modern web
applications / frameworks.My goal is a native php extension that
- is efficient / high performance (thanks to good application design
and native code)- has a really good API (thanks to PHP5's extensible object modell)
- works with all major DBMSs (by using PDO)
- is flexible, so with thin wrapper classes it could be a drop-in
replacement for any framework's ORM module.The concept is object persistence (somewhat similar to Hibernate for
Java). I think object persistence is the most simple, clean and usable
ORM concept, however it is the hardest to implement especially in pure
PHP code (no access to PHP5's internal object modell).So what do you think? Is it a good project for SoC?
About me: I'm 19 year old, a student at the Budapest University of
Technology and Economics on the IT department ... and as you have
already discovered, not a native English speaker.Adam Banko
Hi!
I've created a draft of what would be the Abstract of my application.
Please review it, if I'm mistaken in something or left out an important
point. This will be the public part of the application. There will be a
more detailed description, but it will be visible only to mentors.
BEGIN
Creating a native object persistence module for PHP
Object persistence is a form of Object-Relational Mapping, a technology
that has recently became very important for complex web applications.
For the PHP developer, ORM means a layer that abstracts the complexity
of the relational database, and presents a nicer, object-oriented
interface. So it simplifies data access.
There are many different implementations, most are written in PHP. I'm
proposing a native (compiled from c) extension that would only support
some basic features, but can be extended (with PHP) to have complex,
high-level features (like database schema auto-discovery).
The overall goal is to have an extension bundled with PHP, that could be
a common base for full ORM solutions. If the currently very diverse ORM
implementations would have a common base, it would ease the learning of
different implementations, and enable ORM developers to concentrate on
high-level features. Using ORM solutions based on a native module would
also mean a smaller overhead compared to pure-PHP implementations.
The project (in it's current form) is about 70% ready, and during the
summer my plan is to make it about 90% complete.
The most important goals for the summer are:
- Implementing a database driver module that uses PDO, so all PDO
supported databases will be supported. - Implementing exception-based error handling.
- Rewriting the outer interface to what the community finds the best.
- Some testing, finding and eliminating bugs.
So the extension will be mostly usable. However it won't be complete. It
will still lack:
- A good documentation,
- a full code review to eliminate possible security holes,
- support for safe_mode and for cases where non-controlled PHP code is
used (for example web hosting).
For the current status of the project and more information consult the
project's wiki at http://dbobj.sourceforge.net/ .
END
Adam
Hi!
I've created a draft of what would be the Abstract of my application.
Please review it, if I'm mistaken in something or left out an important
point. This will be the public part of the application. There will be a
more detailed description, but it will be visible only to mentors.
BEGIN
Creating a native object persistence module for PHP
Object persistence is a form of Object-Relational Mapping, a technology
that has recently became very important for complex web applications.
For the PHP developer, ORM means a layer that abstracts the complexity
of the relational database, and presents a nicer, object-oriented
interface. So it simplifies data access.
There are many different implementations, most are written in PHP. I'm
proposing a native (compiled from c) extension that would only support
some basic features, but can be extended (with PHP) to have complex,
high-level features (like database schema auto-discovery).
The overall goal is to have an extension bundled with PHP, that could be
a common base for full ORM solutions. If the currently very diverse ORM
implementations would have a common base, it would ease the learning of
different implementations, and enable ORM developers to concentrate on
high-level features. Using ORM solutions based on a native module would
also mean a smaller overhead compared to pure-PHP implementations.
The project (in it's current form) is about 70% ready, and during the
summer my plan is to make it about 90% complete.
The most important goals for the summer are:
- Implementing a database driver module that uses PDO, so all PDO
supported databases will be supported. - Implementing exception-based error handling.
- Rewriting the outer interface to what the community finds the best.
- Some testing, finding and eliminating bugs.
So the extension will be mostly usable. However it won't be complete. It
will still lack:
- A good documentation,
- a full code review to eliminate possible security holes,
- support for safe_mode and for cases where non-controlled PHP code is
used (for example web hosting).
For the current status of the project and more information consult the
project's wiki at http://dbobj.sourceforge.net/ .
END
Adam