This file demonstrates the utilization of Barebone's Classbuilder functionality to create and
manipulate custom classes dynamically.
1. Creating a New Class:
$cls = new \Barebone\Classbuilder\ClassbuilderClass('Bar');
ClassbuilderClass object, assigning the name "Bar" to the class being
created.2. Defining Constants:
$cls->addConstant('stired', 'true'); and $cls->addConstant('shacken', 'We do not serve
shackes here.');
3. Adding a Method:
$cls->addMethod( ... );: This block defines a method named "Martini" within the "Bar" class. Let's
break down the parameters:
'Martini': The method name.'public': The method's visibility (accessible from
anywhere).[ ... ]: An array of method parameters:
new Barebone\Classbuilder\ClassbuilderMethodParam('bool', 'stired')
new Barebone\Classbuilder\ClassbuilderMethodParam('bool', 'shacken')
'Serve a cocktail.': A brief description of the method's
purpose.'if($stired === true ) {echo "Your drink sir!";} else {} if($shacken === true ) {echo self::shacken;}
else {}'
self::shacken to access the
"shacken" constant defined earlier.4. Setting the File Name:
$cls->setFilename(TEMP_PATH . 'showcase/test2.php');
5. Saving the Class:
$cls->SaveToDisk();
Classbuilder to write the generated code for the "Bar" class to the designated
file.6. Managing Class Collections:
$ClassbuilderCollection = new Barebone\Classbuilder\ClassbuilderCollection();
ClassbuilderCollection class, which can hold
multiple ClassbuilderClass objects.$ClassbuilderCollection->setFilename( ... ); and
$ClassbuilderCollection->LoadFromDisk();
ClassbuilderCollection object from the specified file.$ClassbuilderCollection->setFilename( ... ); and $ClassbuilderCollection->SaveToDisk();
ClassbuilderCollection object:
setFilename(TEMP_PATH . 'showcase/test2.php'); $ClassbuilderCollection->SaveToDisk();
$ClassbuilderCollection->SaveToDisk(TEMP_PATH . 'showcase/');
7. Assigning Data to View:
$this->view->cls = $cls; and $this->view->clscollection =
$ClassbuilderCollection;
view object, likely making them accessible for use in your template files.In summary, this code demonstrates the capabilities of Barebone's Classbuilder in generating custom
classes on the fly, adding constants and methods, and managing collections of these dynamically created classes. Remember to consult the Barebone documentation
for full details and further functionalities.
<?php
// create new class
$cls = new \Barebone\Classbuilder\ClassbuilderClass('Bar');
// add some constants
$cls->addConstant('stired', 'true');
$cls->addConstant('shacken', 'We do not serve shackes here.');
// add a method
$cls->addMethod(
'Martini',
'public',
[
new Barebone\Classbuilder\ClassbuilderMethodParam('bool', 'stired'),
new Barebone\Classbuilder\ClassbuilderMethodParam('bool', 'shacken')
],
'Serve a cocktail.',
'if($stired === true ) {echo "Your drink sir!";} else {} if($shacken === true ) {echo self::shacken;} else {}'
);
// set the name of the file
$cls->setFilename(TEMP_PATH . 'showcase/test.php');
// save to disk
$cls->SaveToDisk();
// classbuilder collection
$ClassbuilderCollection = new Barebone\Classbuilder\ClassbuilderCollection();
// set the filename
$ClassbuilderCollection->setFilename(FULL_APPS_PATH.'barebone/assets/classbuilder.json');
// load the file from disk
$ClassbuilderCollection->LoadFromDisk();
// save to one file
$ClassbuilderCollection->setFilename(TEMP_PATH . 'showcase/test2.php');
$ClassbuilderCollection->SaveToDisk();
// save to folder
$ClassbuilderCollection->SaveToDisk( TEMP_PATH . 'showcase/' );
$this->view->cls = $cls;
$this->view->clscollection = $ClassbuilderCollection;
<?php
class Bar{
const stired = 'true';
const shacken = 'We do not serve shackes here.';
/**
* Serve a cocktail.
* @var bool $stired
* @var bool $shacken
*/
public function Martini( bool $stired , bool $shacken ){
if($stired === true ) {echo "Your drink sir!";} else {} if($shacken === true ) {echo self::shacken;} else {}
}
}
Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => Bar
[extends:Barebone\Classbuilder\ClassbuilderClass:private] =>
[implements:Barebone\Classbuilder\ClassbuilderClass:private] =>
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[stired] => Barebone\Classbuilder\ClassbuilderConstant Object
(
[name:Barebone\Classbuilder\ClassbuilderConstant:private] => stired
[value:Barebone\Classbuilder\ClassbuilderConstant:private] => true
[phpdoc:Barebone\Classbuilder\ClassbuilderConstant:private] =>
[type:Barebone\Classbuilder\ClassbuilderConstant:private] => string
)
[shacken] => Barebone\Classbuilder\ClassbuilderConstant Object
(
[name:Barebone\Classbuilder\ClassbuilderConstant:private] => shacken
[value:Barebone\Classbuilder\ClassbuilderConstant:private] => We do not serve shackes here.
[phpdoc:Barebone\Classbuilder\ClassbuilderConstant:private] =>
[type:Barebone\Classbuilder\ClassbuilderConstant:private] => string
)
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[Martini] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => Martini
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[stired] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => stired
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] =>
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => string
)
[shacken] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => shacken
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] =>
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => string
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => Serve a cocktail.
[body:Barebone\Classbuilder\ClassbuilderMethod:private] => if($stired === true ) {echo "Your drink sir!";} else {} if($shacken === true ) {echo self::shacken;} else {}
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] => /var/www/vhosts/barebone.me/dev.barebone.me/barebone-studio/var/tmp/showcase/test.php
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] =>
)
Barebone\Classbuilder\ClassbuilderCollection Object
(
[filename:Barebone\Classbuilder\ClassbuilderCollection:private] => /var/www/vhosts/barebone.me/dev.barebone.me/barebone-studio/var/tmp/showcase/test2.php
[collection:Barebone\Classbuilder\ClassbuilderCollection:private] => Array
(
[0] => Barebone\Classbuilder\ClassbuilderInterface Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderInterface:private] => IBar interface. Every clas that implements this interface must have these methods defined.
[name:Barebone\Classbuilder\ClassbuilderInterface:private] => IBar
[methods:Barebone\Classbuilder\ClassbuilderInterface:private] => Array
(
[open] => Barebone\Classbuilder\ClassbuilderInterfaceMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => open
[params:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => Array
(
[force] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => force
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
[ontime] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => ontime
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => false
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => open bar
)
[close] => Barebone\Classbuilder\ClassbuilderInterfaceMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => close
[params:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => Array
(
[force] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => force
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
[ontime] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => ontime
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => false
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderInterfaceMethod:private] => open bar
)
)
)
[1] => Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => Bars
[extends:Barebone\Classbuilder\ClassbuilderClass:private] =>
[implements:Barebone\Classbuilder\ClassbuilderClass:private] => IBar
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[OPEN] => Barebone\Classbuilder\ClassbuilderConstant Object
(
[name:Barebone\Classbuilder\ClassbuilderConstant:private] => OPEN
[value:Barebone\Classbuilder\ClassbuilderConstant:private] => BAR IS OPEN
[phpdoc:Barebone\Classbuilder\ClassbuilderConstant:private] => BAR IS OPEN
[type:Barebone\Classbuilder\ClassbuilderConstant:private] => string
)
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[opened] => Barebone\Classbuilder\ClassbuilderPropertie Object
(
[visibility:Barebone\Classbuilder\ClassbuilderPropertie:private] => public
[name:Barebone\Classbuilder\ClassbuilderPropertie:private] => opened
[value:Barebone\Classbuilder\ClassbuilderPropertie:private] => false
[phpdoc:Barebone\Classbuilder\ClassbuilderPropertie:private] => Is the bar open?
[type:Barebone\Classbuilder\ClassbuilderPropertie:private] => string
)
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[open] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => open
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[force] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => force
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
[ontime] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => ontime
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => false
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => open bar
[body:Barebone\Classbuilder\ClassbuilderMethod:private] =>
)
[close] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => close
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[force] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => force
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
[ontime] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => ontime
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => false
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => open bar
[body:Barebone\Classbuilder\ClassbuilderMethod:private] =>
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] =>
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] => 1
)
[2] => Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => BarTender
[extends:Barebone\Classbuilder\ClassbuilderClass:private] => Bars
[implements:Barebone\Classbuilder\ClassbuilderClass:private] =>
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[ServeDrink] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => ServeDrink
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[stired] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => stired
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => Serve a drink
[body:Barebone\Classbuilder\ClassbuilderMethod:private] => if($this->open()) {
echo 'Your drink sir. Cheers!';
}else{
echo 'Sorry we are closed.';}
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] =>
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] =>
)
[3] => Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => Pub
[extends:Barebone\Classbuilder\ClassbuilderClass:private] => Bars
[implements:Barebone\Classbuilder\ClassbuilderClass:private] => IBar
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[clean] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => clean
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[onstart] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => onstart
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => Clean the pub
[body:Barebone\Classbuilder\ClassbuilderMethod:private] => echo 'cleaning the PUB.';
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] =>
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] =>
)
[4] => Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => IrishPub
[extends:Barebone\Classbuilder\ClassbuilderClass:private] => Bars
[implements:Barebone\Classbuilder\ClassbuilderClass:private] => IBar
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[clean] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => clean
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[onstart] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => onstart
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => Clean the pub
[body:Barebone\Classbuilder\ClassbuilderMethod:private] => echo 'cleaning the IrishPub. This might take a while...';
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] =>
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] =>
)
[5] => Barebone\Classbuilder\ClassbuilderClass Object
(
[phpdoc:Barebone\Classbuilder\ClassbuilderClass:private] =>
[clsname:Barebone\Classbuilder\ClassbuilderClass:private] => Cafe
[extends:Barebone\Classbuilder\ClassbuilderClass:private] => Bars
[implements:Barebone\Classbuilder\ClassbuilderClass:private] => IBar
[constants:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[properties:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
)
[methods:Barebone\Classbuilder\ClassbuilderClass:private] => Array
(
[clean] => Barebone\Classbuilder\ClassbuilderMethod Object
(
[visibility:Barebone\Classbuilder\ClassbuilderMethod:private] => public
[name:Barebone\Classbuilder\ClassbuilderMethod:private] => clean
[params:Barebone\Classbuilder\ClassbuilderMethod:private] => Array
(
[onstart] => Barebone\Classbuilder\ClassbuilderMethodParam Object
(
[cast:Barebone\Classbuilder\ClassbuilderMethodParam:private] => bool
[name:Barebone\Classbuilder\ClassbuilderMethodParam:private] => onstart
[value:Barebone\Classbuilder\ClassbuilderMethodParam:private] => true
[type:Barebone\Classbuilder\ClassbuilderMethodParam:private] => boolean
)
)
[phpdoc:Barebone\Classbuilder\ClassbuilderMethod:private] => Clean the Cafe
[body:Barebone\Classbuilder\ClassbuilderMethod:private] => echo 'cleaning the CAFE.';
)
)
[filename:Barebone\Classbuilder\ClassbuilderClass:private] =>
[is_abstract:Barebone\Classbuilder\ClassbuilderClass:private] =>
)
)
)
<?php
/**
* IBar interface. Every clas that implements this interface must have these methods defined.
* @var IBar
*/
interface IBar{
/**
* open bar
* @var bool $force = true
* @var bool $ontime = false
*/
public function open( bool $force = true, bool $ontime = false);
/**
* open bar
* @var bool $force = true
* @var bool $ontime = false
*/
public function close( bool $force = true, bool $ontime = false);
}
abstract class Bars implements IBar{
/**
* BAR IS OPEN
* @var OPEN
*/
const OPEN = 'BAR IS OPEN';
/**
* Is the bar open?
* @var opened
*/
public $opened = 'false';
/**
* open bar
* @var bool $force = true
* @var bool $ontime = false
*/
public function open( bool $force = true , bool $ontime = false ){
}
/**
* open bar
* @var bool $force = true
* @var bool $ontime = false
*/
public function close( bool $force = true , bool $ontime = false ){
}
}
class BarTender extends Bars{
/**
* Serve a drink
* @var bool $stired = true
*/
public function ServeDrink( bool $stired = true ){
if($this->open()) {
echo 'Your drink sir. Cheers!';
}else{
echo 'Sorry we are closed.';}
}
}
class Pub extends Bars implements IBar{
/**
* Clean the pub
* @var bool $onstart = true
*/
public function clean( bool $onstart = true ){
echo 'cleaning the PUB.';
}
}
class IrishPub extends Bars implements IBar{
/**
* Clean the pub
* @var bool $onstart = true
*/
public function clean( bool $onstart = true ){
echo 'cleaning the IrishPub. This might take a while...';
}
}
class Cafe extends Bars implements IBar{
/**
* Clean the Cafe
* @var bool $onstart = true
*/
public function clean( bool $onstart = true ){
echo 'cleaning the CAFE.';
}
}