Barebone\Classbuilder

Building Custom Classes in Barebone: A Guided Explanation

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');
    :
    This line instantiates a new 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.');
    :
    These lines define constants within the "Bar" class. These constants act like fixed values accessible throughout the class.

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')
        : Defines a parameter named "stired" of type boolean.
      • new Barebone\Classbuilder\ClassbuilderMethodParam('bool', 'shacken')
        : Defines a parameter named "shacken" of type boolean.
    • '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 {}'
      : The actual code implementing the method's logic. This code checks the values of the "stired" and "shacken" parameters and outputs different messages based on their values. It also uses self::shacken to access the "shacken" constant defined earlier.

4. Setting the File Name:

  • $cls->setFilename(TEMP_PATH . 'showcase/test2.php');
    :
    This line specifies the location where the generated code for the "Bar" class will be saved as a PHP file.

5. Saving the Class:

  • $cls->SaveToDisk();
    :
    This line instructs the Classbuilder to write the generated code for the "Bar" class to the designated file.

6. Managing Class Collections:

  • $ClassbuilderCollection = new Barebone\Classbuilder\ClassbuilderCollection();
    :
    This line creates a new instance of the ClassbuilderCollection class, which can hold multiple ClassbuilderClass objects.
  • $ClassbuilderCollection->setFilename( ... ); and $ClassbuilderCollection->LoadFromDisk();
    :
    These lines set the filename for a previously saved collection of classes and then load them back into the ClassbuilderCollection object from the specified file.
  • $ClassbuilderCollection->setFilename( ... ); and $ClassbuilderCollection->SaveToDisk();
    :
    This section demonstrates two ways to save the ClassbuilderCollection object:
    • setFilename(TEMP_PATH . 'showcase/test2.php'); $ClassbuilderCollection->SaveToDisk();
      :
      Saves the collection as a single PHP file containing the code for all included classes.
    • $ClassbuilderCollection->SaveToDisk(TEMP_PATH . 'showcase/');
      :
      Saves each class within the collection to individual files in the specified directory.

7. Assigning Data to View:

  • $this->view->cls = $cls; and $this->view->clscollection = $ClassbuilderCollection;
    :
    These lines assume you're utilizing a view system within your framework. They assign the generated "Bar" class and the collection of classes to the 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.

Source

<?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 {}		
	}
	
}

Your drink sir!We do not serve shackes here.
		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.';		
	}
	
}


Sorry we are closed.BarTender Object ( [opened] => false ) cleaning the PUB.cleaning the CAFE.
  • Barebone\Classbuilder\ClassbuilderClass

    Barebone\Classbuilder\ClassbuilderClass
    • [P] $phpdoc : string
    • [P] $clsname : string
    • [P] $extends : string
    • [P] $implements : string
    • [P] $constants : array
    • [P] $properties : array
    • [P] $methods : array
    • [P] $filename : string
    • [P] $is_abstract : bool
    • [M] __construct( string $clsname, string $extends, string $implements, array $constants, array $properties, array $methods ) : void
    • [M] __toString() : string
    • [M] addConstant( string $name, string $value, string $phpdoc, string $visibility ) : void
    • [M] addPropertie( string $name, string $value, string $phpdoc, string $visibility, string $type ) : void
    • [M] addMethod( string $name, string $visibility, array $params, string $phpdoc, string $body ) : void
    • [M] getClassname() : void
    • [M] setClsname( string $clsname ) : void
    • [M] getExtends() : void
    • [M] setExtends( string $extends ) : void
    • [M] getImplements() : void
    • [M] setImplements( string $implements ) : void
    • [M] getConstant( string $name ) : void
    • [M] setConstant( string $name, string $value, string $phpdoc, string $visibility ) : void
    • [M] getConstants() : void
    • [M] setConstants( array $constants ) : void
    • [M] setPropertie( string $name, string $value, string $phpdoc, string $visibility, string $type ) : void
    • [M] getProperties() : void
    • [M] setProperties( array $properties ) : void
    • [M] setMethod( string $name, string $visibility, array $params, string $phpdoc, string $body ) : void
    • [M] getMethod( string $name ) : void
    • [M] getMethods() : void
    • [M] setMethods( array $methods ) : void
    • [M] getPhpdoc() : string
    • [M] setPhpdoc( string $phpdoc ) : void
    • [M] setFilename( string $filename ) : void
    • [M] getFilename() : string
    • [M] LoadFromDisk() : void
    • [M] SaveToDisk() : void
    • [M] getIs_abstract() : bool
    • [M] setIs_abstract( bool $is_abstract ) : void
    • [M] create_getter_setter( $propertie ) : void
    • [M] create_getter_setters() : void