From: Demian K. <dem...@vi...> - 2012-07-20 12:26:10
|
There is an online video (a webinar capture) explaining the background of Zend\Db here: http://www.zend.com/en/resources/webinars/framework and the full online docs are here: http://packages.zendframework.com/docs/latest/manual/en/zend.db.html After watching the webinar, I was able to understand the docs and write code with reasonable success. For the most part, the library does a good job of turning the general feel of SQL into an object-oriented interface. You can either represent tables and rows directly as objects (using TableGateway and RowGateway classes) or you can construct SQL statements outside of a class model and send them directly to a database adapter (probably the more likely use case for an ILS driver). The only caveats are related to the fact that Zend Framework 2 is still under development: 1.) some of the interfaces may still be subject to change and 2.) I have encountered some bugs (mostly related to the RowGateway class). - Demian ________________________________ From: Trevor Dykstra [Tr...@in...] Sent: Thursday, July 19, 2012 10:19 PM To: Demian Katz; vuf...@li... Subject: RE: ILS Drivers for VuFind 2.0 Thanks Demian, I'll also have a look at the Zend\Db to see if this is easy enough to incorporate into our drivers instead of the native PHP interface. Did you find this easy enough to do when writing the internal db communication for vufind? Regards, Trevor. From: Demian Katz [mailto:dem...@vi...] Sent: Thursday, 19 July 2012 10:21 PM To: Trevor Dykstra; vuf...@li... Subject: RE: ILS Drivers for VuFind 2.0 Zend Framework includes a database abstraction layer which allows you to create and execute queries in a platform-independent manner. The files you refer to are part of that Zend\Db library. VuFind uses Zend\Db for its own internal database communication – this is how you can use it equally well (at least in theory) with MySQL, PostgreSQL or Oracle. None of the ILS drivers currently use Zend\Db, however – they are all written to use the native PHP database interfaces. In most cases, this may be the best approach: if a particular ILS only uses one database back-end, there is less need for abstraction, and not tying the drivers to a particular PHP framework makes them more portable across different versions of VuFind. However, in some cases, it may actually make sense to transition the code to use Zend\Db instead: in situations where complex queries offer SQL insertion vulnerabilities (since using a library instead of hand-building SQL strings results in more secure code) and in situations where a single ILS may run on multiple different database back-ends (since the abstraction can then come into play). - Demian From: Trevor Dykstra [mailto:Tr...@in...]<mailto:[mailto:Tr...@in...]> Sent: Wednesday, July 18, 2012 6:37 PM To: Demian Katz; vuf...@li...<mailto:vuf...@li...> Subject: RE: ILS Drivers for VuFind 2.0 Thanks Demian, I noticed that in the Zend Framework files in vufind2.0a there are DB specific PHP drivers for connection and queries to the database: e.g. vendor/ZF2/library/Zend/Db/Adapter/Driver/Sqlsrv for sql server, which contains Connection.php, Statement.php, etc. (and then for PDO there is vendor/ZF2/library/Zend/Db/Adapter/Driver/Pdo) Do these relate to the ILS Drivers? How are these ZF2 driver files used with VuFind? Regards, Trevor. From: Demian Katz [mailto:dem...@vi...]<mailto:[mailto:dem...@vi...]> Sent: Thursday, 19 July 2012 12:07 AM To: Trevor Dykstra; vuf...@li...<mailto:vuf...@li...> Subject: RE: ILS Drivers for VuFind 2.0 You are correct that VuFind 2.0 will require PHP 5.3+ (to be very specific, 5.3.3 or higher). The ILS drivers in 2.0alpha are not fully tested – since I don’t have access to all of the ILSes in question, I just did my best to convert the code, but I wasn’t always able to confirm that it really works. You can use them as a model to see what needs to change (mostly HTTP request code and error handling, since PEAR_Error objects are replaced with exceptions), but I don’t guarantee that they all work in PHP 5.3. That being said, from doing a little research into the mssql situation, it sounds like the mssql functions are still available in Linux versions of PHP 5.3 (though getting them installed may be somewhat painful); the sqlsrv functions are ONLY available in Windows through a Microsoft-provided plugin. Ultimately, the solution may be to replace all of the database calls with wrapper functions that check to see which version is available and call the right thing… or, if fully supported, perhaps the whole thing can be refactored to use the Zend Framework’s database abstraction library. Also please keep in mind that 2.0alpha is a transitional stage of VuFind development. 2.0beta is going to be much closer to the final version. If you plan on spending time rewriting your drivers, please target them to 2.0beta rather than 2.0alpha to save yourself from extra unnecessary work. The 2.0beta code (available in Git) is already functional enough to test some basic driver functions, so you can start working with it today if you like. I’ll be adding more ILS functionality in the near future. Let me know if you have questions about anything! - Demian From: Trevor Dykstra [mailto:Tr...@in...]<mailto:[mailto:Tr...@in...]> Sent: Tuesday, July 17, 2012 5:02 PM To: vuf...@li...<mailto:vuf...@li...> Subject: [VuFind-Tech] ILS Drivers for VuFind 2.0 Hi all, I am just starting to plan ahead for vufind 2.0 to see what changes we need to make to our custom mssql ILS drivers that we have developed for vufind 1.3 and PHP 5.2. Am I correct in thinking that vufind 2.0 will only work with PHP 5.3 and above (i.e. not support PHP 5.2)? Are the sample ILS drivers provided in the /vufind-2.0alpha/library/VF/ILS/Driver up to date for PHP 5.3? It is just when I look at the Horizon driver (Horizon.php) it seems to use a native mssql driver for PHP 5.2 which I thought was not available in PHP 5.3 (e.g. mssql_pconnect) My understanding that PHP 5.3 requires the Microsoft SQL Server driver since the native php mssql driver is not available for PHP 5.3. - so that "mssql_pconnect" is replaced by "sqlsrv_connect" I hope this makes sense! Regards, Trevor Dykstra EvolvePlus Pty Ltd |