Ticket #803 (closed Bug: fixed)

Opened 9 months ago

Last modified 7 months ago

Remove unnecessary require_once from codebase

Reported by: vipsoft Owned by: vipsoft
Priority: normal Milestone: Piwik 0.4.2
Component: Core Keywords:
Cc: Sensitive:

Description

In #620, we implemented an autoloader. In this ticket, we clean up the code by removing unnecessary require_once statements. This will require some analysis.

  • core/Piwik.php - add this as a special case to the autoloader or rename it to Helper.php (class Piwik_Helper)?
  • some files contain multiple class definitions, e.g., core/Auth.php contains Piwik_Auth and Piwik_Auth_Result
  • ./piwik.php - keep it as fast as possible; autoloading for a cache miss is ok

Don't change:

  • naming of "core" & "plugins" folders
  • FrontController.php and PluginsManager.php - they have their own autoloaders; don't change this

Change History

Changed 9 months ago by vipsoft

  • obviously, where we require_once a file that doesn't contain a class, keep it, but turn it into an absolute path (i.e., prefix it with PIWIK_INCLUDE_PATH)

Changed 9 months ago by vipsoft

  • don't remove the require_once from Zend folder until it has been updated (#497)

Changed 9 months ago by vipsoft

(In [1224]) refs #620, refs #803 - refactor autoloader into core/Loader.php (class Piwik_Loader); remove unnecessary require_once in core/Common.php

Changed 9 months ago by vipsoft

(In [1225]) refs #803 - add autoloader to tests

Changed 9 months ago by matt

  • concerning when two classes are in the same file, are you planning to lookup the class name without last part (to look core/Auth.php for the Auth_Result class) or do you plan to create the new file?

Changed 9 months ago by vipsoft

My thought is to leave subclassed Exceptions where they are. We can add code to the autoloader to handle this, assuming I got the renaming right. Something like Auth_Result should be in its own file for speed and consistency. An alternative is to continue to use require_once for these cases.

Changed 9 months ago by vipsoft

Actually, Piwik_Auth_Result isn't a good example as it and Piwik_Auth are currently always used in the same context. (core/Access.php, core/Auth.php, plugins/Login/Auth.php)

Changed 9 months ago by vipsoft

(In [1228]) refs #803 - auto-discovery algorithm to handle class Piwik, files with multiple class definitions (e.g., Piwik_Auth_Result), and fix typo (reference to Piwik_Api_Proxy).

Changed 9 months ago by vipsoft

(In [1229]) refs #803 - temp fix: PluginsManager defines functions in global scope

Changed 9 months ago by vipsoft

(In [1231]) refs #803 - temp fix; Translate.php contains global scope functions

Changed 9 months ago by vipsoft

(In [1232]) refs #803 - Log/Exception contains classes that won't be found by autoloader's discovery algorithm; FrontController.php and Common.php use classes with global scope functions (i.e., this needs to be refactored)

Changed 9 months ago by vipsoft

(In [1233]) refs #803 - Auth is loaded by piwik.php?

Changed 9 months ago by vipsoft

Ok, files containing global scope functions will continue to be manually included (via require_once).

Changed 9 months ago by vipsoft

(In [1248]) refs #803 comment:11 - rename Log Formatter classes for consistency

Changed 9 months ago by vipsoft

  • owner set to vipsoft
  • status changed from new to assigned
  • milestone changed from 4- Stable release to 2- DigitalVibes

Changed 9 months ago by matt

  • milestone changed from 2- DigitalVibes to 1 - Piwik 0.4.2

increasing priority - now that the loader is in place, maybe we should aim to close the ticket and remove all require_once - vipsoft if you disagree please reset the milestone

Changed 8 months ago by vipsoft

  • status changed from assigned to closed
  • resolution set to fixed

(In [1296]) fixes #803 - remove unnecessary require_once from core, plugins, and parts of libs. (I didn't touch: open-flash-chart, Zend Framework, and PEAR HTML.)

Changed 8 months ago by vipsoft

(In [1299]) refs #803, refs #735 - lower default to 200; remove unnecessary require_once; standardize setting of include_path

Changed 7 months ago by alivenk

Note: See TracTickets for help on using tickets.