Starting as a collection of scripts for building personal
homepages, PHP is now one of the most popular programming
languages for building server-side web applications. Like
other scripting languages, PHP includes a number of dynamic
language features, such as an eval expression to run code
provided at runtime as strings; special methods (referred to
as magic methods) that handle accesses of object fields and
uses of methods that are either not defined or not visible; and
the ability to use expressions, instead of literal identifiers, to
give the names of variables, functions, methods, classes in
new expressions, and properties (referred to here as variable
features, and specifically as, e.g., variable functions or variable
methods). While these features often make the programmer’s
job easier, they make it harder for program analysis tools to
statically compute a precise approximation of possible runtime
behaviors. This, in turn, makes it harder to provide developers
with powerful tools for working with large code bases, such
as tools for finding possible security bugs and for refactoring.