Download the PHP package samhastings/classistant without Composer
On this page you can find all versions of the php package samhastings/classistant. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download samhastings/classistant
More information about samhastings/classistant
Files in samhastings/classistant
Package classistant
Short Description A fluent interface for generating PHP classes in PHP
License MIT
Homepage https://github.com/samhastings/classistant
Informations about the package classistant
Classistant
Classistant provides a fluent interface for generating PHP classes in PHP.
Why?
I needed a way of creating PHP classes on the fly, defining property and method names based on user input. Creating PHP code based on user input might sound like an awful idea, but it actually worked pretty well.
Requirements
Classistant requires PHP 7.0 or higher, both to run the code generator and to run the PHP it outputs. I’m afraid I have no plans to write a PHP 5.x version of this library.
Limitations
Currently, Classistant does not support any of the following features. I do however plan to implement these in the future.
- Anonymous class generation.
- Declaring a method as
abstract
without also declaring the class as such will throw a fatal error in PHP. No such warning is thrown when trying to generate such code with Classistant. - Interface generation.
Installation
Install via Composer:
Configuration
There’s not much this library offers in the way of configuration, apart from allowing you to customise the automatic indentation to match your personal preference.
By default, generated code is indented with four spaces. Override this as you wish with the following Config
class properties.
Usage
A complete example of functionality is shown below. I’ve commented it throughout but the code will be self-explanatory.
All classes reside within the SamHastings\Classistant
namespace.
A note on class resolution
The ::class
constant, available on all classes, interfaces and traits as of PHP 5.5, provides a handy shortcut for fetching a fully-qualified class name. This will never contain a leading backslash, as a class name in a string is always treated by PHP as being relative to the global namespace when called with the new
operator.
Whenever you’re using Classistant to generate namespaced classes, always prepend a backslash to arguments passed to ClassGenerator::extends()
, ClassGenerator::implements()
and ClassGenerator::use()
. The same rules apply if you’re passing a class or interface name as a method parameter or return type. Otherwise, your generated code will generate a fatal error as PHP looks for said class names in the same namespace as your generated class.