PHP Frameworks benchmarks in phpdepend
Basic compare
| Name | NOP | NOC | NOM | LOC | CLOC | NCLOC | ANDC | AHH |
|---|---|---|---|---|---|---|---|---|
| akelos | 74 | 354 | 3475 | 229663 | 70872 | 158791 | 0.39 | 0.18 |
| cakephp | 53 | 658 | 3351 | 148087 | 47948 | 100139 | 0.94 | 0.26 |
| codeigniter | 5 | 44 | 758 | 40034 | 14846 | 25188 | 0.09 | 0.10 |
| doo | 9 | 13 | 131 | 6358 | 1741 | 4617 | 0.00 | 0.00 |
| ezcomponents | 36 | 445 | 3651 | 98922 | 33991 | 64931 | 0.49 | 0.26 |
| kohana | 26 | 168 | 1398 | 43094 | 14679 | 28415 | 0.27 | 0.18 |
| limonade | 3 | 0 | 0 | 3660 | 974 | 2686 | 0.00 | 0.00 |
| nette | 19 | 166 | 1733 | 48175 | 16245 | 31930 | 0.39 | 0.19 |
| prado | 105 | 1134 | 10578 | 278681 | 95232 | 183449 | 0.72 | 0.28 |
| solar | 37 | 791 | 3528 | 279082 | 140141 | 138941 | 0.97 | 0.43 |
| symfony | 220 | 1283 | 9691 | 275740 | 100875 | 174865 | 0.66 | 0.34 |
| yii | 37 | 261 | 1962 | 97984 | 30128 | 67856 | 0.39 | 0.14 |
| zend 1.0 | 180 | 1121 | 9125 | 241455 | 89791 | 151664 | 0.44 | 0.18 |
| zend 1.5 | 201 | 1588 | 12996 | 342798 | 129310 | 213488 | 0.51 | 0.19 |
| zend 1.6 | 210 | 1682 | 13563 | 341825 | 96132 | 245693 | 0.48 | 0.15 |
| zend 1.7 | 270 | 2117 | 17501 | 451953 | 171980 | 279973 | 0.53 | 0.18 |
| zend 1.8 | 313 | 2497 | 20744 | 530915 | 202305 | 328610 | 0.53 | 0.18 |
| zend 1.9 | 337 | 2771 | 23230 | 591220 | 225011 | 366209 | 0.54 | 0.19 |
Pyramid

- NOP
- The Number Of Packages metric counts the packages within the analyzed software system.
- NOC
- The Number Of Classes metric counts the declared classes within the analyzed software system.
- NOM
- The Number Of Methods metric counts all declared methods, which in this context means class methods and simple functions.
- LOC
- The Lines Of Code metric shows the number of executable source lines within the analyzed software system. To calculate this value PHP_Depend counts all non whitespace lines and all non comment lines.
- CLOC
- Comment Line of code
- NCLOC
- Non-Comment Line of Code
- CYCLO
- Cyclomatic complexity is a software metric (measurement). It was developed by Thomas McCabe and is used to measure the complexity of a program. It directly measures the number of linearly independent paths through a program's source code.
- CALLS
- This metric count the number of distinct function- and method-calls. Distinct means that one and the same method-call within a function- or method-body is only counted once.
- FANOUT
- The FANOUT provides information on types referenced by classes and interfaces. It only counts those types that are not part of the same Inheritance branch.
- ANDC
- The Average Number of Derived Classes metric describes the average of derived classes. In a system of ten classes an ANDC-value of 0.5 means, that every second class is derived from another class.
- AHH
- The Average Hierarchy Height metric is a average depth of the inheritance hierarchy. In a system of ten classes, a AHH-value of 1 can be interpreted in different ways, for example: Five classes inherit from five other classes within the analyzed application or five classes inherit from a single root class.
Reference values
| Metric | Low | Average | High |
|---|---|---|---|
| CYCLO/LOC | 0.16 | 0.20 | 0.24 |
| LOC/NOM | 7 | 10 | 13 |
| NOM/NOC | 4 | 7 | 10 |
| NOC/NOP | 6 | 17 | 26 |
| CALLS/NOM | 2.01 | 2.62 | 3.2 |
| FANOUT/CALLS | 0.56 | 0.62 | 0.68 |
| ANDC | 0.25 | 0.41 | 0.57 |
| AHH | 0.09 | 0.21 | 0.32 |
JDepend
PhpDepend is derivate from JDepend. Jdepend graph about Abstractness (A) and Instability (I) and ideal software have Distance from the Main Sequence (D) minimalized.

- Afferent Couplings (Ca)
- The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
- Efferent Couplings (Ce)
- The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
- Abstractness (A)
- The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package.
- Instability (I)
- The ratio of efferent coupling (Ce) to total coupling (Ce + Ca) such that I = Ce / (Ce + Ca). This metric is an indicator of the package's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package.
- Distance from the Main Sequence (D)
- The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability.
A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability.
Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible.
Better overview about pyramid is in Manuel Pichler's post about Using the Overview Pyramid.