Skip to content


Local mods to Zend Framework should be subclassed #632

anonymous-piwik-user opened this Issue · 6 comments

3 participants


i have tried to use piwik in a zend framework project so i have copy the example on the [Calling the API From within PHP]( page and paste it in a zf controller after hacking the include_path to avoid ‘cannot redeclare class exception’ (see #631)

then i got the following error :

``` Fatal error: Call to undefined method Zend_Db_Adapter_Pdo_Mysql::resetConfigArray() in D:\WORK\SITES WEB\JC2\SRC\lib\piwik\core\Piwik.php on line 1184

—> Piwik::createDatabaseObject( ) ..\FrontController.php:234 ```

Matthieu said on the forum that’s because resetConfigArray() is a custom method from piwik, but now the classes are added from the standart library used for the whole project. i suggest any custom method like this one to be moove in new classes extending the original classes (eg Zenwik_Db_Adpater)

while looking at this i also noticed that piwik is using Zend_Registry to store data throw the process. Any user using already zf will surely use Zend_Registry too so every entry in it should be prefixed to avoid scope issue

``` Zend_Registry::set(‘piwik_config’,$config) ```

maybe something similar should be done for zend_session and zend_auth

PS : maybe same pb can happen with other third party librarys (smarty is used a lot too …)

Piwik Open Source Analytics member

(In 1030) – renaming all constants that were not prefixed by PIWIK_ refs #632


co-depends in #497


Adding resetConfigArray() to Zend_Db_Adapter_Abstract is much cleaner/simpler than subclassing all the adapters and changing the factory to use our subclassed adapters. I'll add a method_exists() check.


In [1453], check that resetConfigArray() method exists

Piwik Open Source Analytics member

I think we might be able to call _construct() with empty parameter, rather than having to keep the hack ->resetConfig()

I will investigate


In [1465], fixes #632 - move local mods to subclassed ZF classes; the duplication in Db/Mysqli.php and Db/Pdo/Mysql.php is unavoidable because PHP doesn't support multiple inheritance

@anonymous-piwik-user anonymous-piwik-user added this to the Piwik 0.4.4 milestone
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.