phpOpenTracker is a framework solution for the analysis of Web site traffic and visitor behaviour. It features a logging engine that, either invoked as a Web bug by an HTML image tag or embedded with two lines of code into your PHP application, logs each request to a Web site into a database. One installation can track an arbitrary number of Web sites. Through its API, you can easily access the gathered data and perform complex operations on it (for instance, the analysis of your visitors' click paths).
Log4php is a PHP port of Log4j, the most popular Java logging framework. It supports configuration through XML and properties files (with the same structure as log4j) and custom Configurators. File, RollingFile, DailyFile, Echo, Console, Mail, PEAR::Db, PHP error, Syslog or NT events, and socket appenders are supported. Simple, TTCC, Pattern, Html, and Xml Layouts are supported. It also supports Filters, custom Levels, and Loggers. Internal debugging can be switched on and off. Log4php can be used inside a class or inside a main/sub function.
SPindent (Server Page Indenter) is a JSP/PHP structural validator and indenter. It performs structural compatibility check of inner HTML generated from "parallel" branches of process flow statements such as if/else. It allows for those HTML branches to have different entry and exit HTML stack points, as far as the branches are compatible. This allows for verification and proper indentation of handy workarounds, as well as rusty pyramids. It is based on MixedCC (Mixed Compiler Compiler).
Studs MVC Framework+ contains a port of Apache's Jakarta Struts to PHP, though the libraries included in the rest of the project are much more vast. In order to implement the Struts port, it was necessary to build a core, object-oriented API in the style of the JDK and the Jakarta Commons, a servlet container to handle HTTP requests and to invoke servlet classes, and finally, a parsing engine for JSP-style template pages. In the end, the result is an environment which is very similar to that provided by a J2EE Web Container, only everything is implemented in PHP. While it was possible to carry over many of the concepts, designs and mechanisms from J2EE, some limitations do exist due to the nature of the PHP programming language, such as the lack of checked exceptions (runtime only).
Nennius is an object-oriented application engine. Although initially intended to be a time and expense tracking tool, it has since been improved upon to support a wide array of data types and relationships. It offers the ability to run multiple, concurrent Web applications from a single Nennius engine. Each Web application is fully customizable and can easily be modified to fit almost any existing business model.