diff --git a/HtmlTag.php b/HtmlTag.php index 28dca71..1b052e6 100755 --- a/HtmlTag.php +++ b/HtmlTag.php @@ -1,57 +1,335 @@ + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator */ namespace HtmlGenerator; - -if (!defined('ENT_HTML5')) -{ - define('ENT_HTML5', 48); +/** + * Defines our HTML5 element integer. + */ +if (!defined('ENT_HTML5')) { + define('ENT_HTML5', 48); } - +/** + * Add's the tags information more dynamically. + * + * PHP version 5.3 + * + * @category HtmlTag + * @package HtmlGenerator + * @author Airmanbzh + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator + */ class HtmlTag extends Markup { - /** @var int The language convention used for XSS avoiding */ + /** + * The language convention used for XSS avoiding. + * + * @var int + */ public static $outputLanguage = ENT_HTML5; - + /** + * The auto closed tags list (or void elements.) + * + * @var array + */ protected $autocloseTagsList = array( - 'img', 'br', 'hr', 'input', 'area', 'link', 'meta', 'param' + 'area', + 'base', + 'basefont', + 'bgsound', + 'br', + 'col', + 'command', + 'embed', + 'frame', + 'hr', + 'image', + 'img', + 'input', + 'isindex', + 'keygen', + 'link', + 'menuitem', + 'meta', + 'nextid', + 'param', + 'source', + 'track', + 'wbr' ); - /** * Shortcut to set('id', $value) - * @param string $value + * + * @param string $value The value to set. + * * @return HtmlTag instance */ public function id($value) { return $this->set('id', $value); } - /** * Add a class to classList - * @param string $value + * + * @param string|array $value The value to set. + * * @return HtmlTag instance */ public function addClass($value) { - if (!isset($this->attributeList['class']) || is_null($this->attributeList['class'])) { + /** + * If the attribute is not set or is null, + * initialize into an array. + */ + if (!isset($this->attributeList['class']) + || is_null($this->attributeList['class']) + ) { $this->attributeList['class'] = array(); } + /** + * Classes are separated by spaces. + * Attempt exploding the values on just a space. + */ + if (!is_array($value)) { + if (false !== strpos($value, ' ')) { + $value = explode(' ', $value); + } + } + /** + * If value is an array of values perform actions. + */ + if (is_array($value)) { + /** + * Trim all values of the array. + */ + $value = array_map( + 'trim', + $value + ); + /** + * Filter our values. + */ + $value = array_filter($value); + /** + * If count of values is 0 return. + */ + if (0 === count($value)) { + return $this; + } + /** + * Ensure all values are unique. + */ + $value = array_unique($value); + /** + * Join the values into our class list. + */ + $this->attributeList['class'] += $value; + /** + * Unique the attribute list. + */ + $this->attributeList['class'] = array_unique( + $this->attributeList['class'] + ); + /** + * Sort nicely. + */ + natsort($this->attributeList['class']); + /** + * Order nicely. + */ + $this->attributeList['class'] = array_values( + $this->attributeList['class'] + ); + /** + * Return. + */ + return $this; + } + /** + * Trim the value. + */ + $value = trim($value); + /** + * If the value is empty, return immediately. + */ + if (empty($value)) { + return $this; + } + /** + * Add the value to the class list. + */ $this->attributeList['class'][] = $value; + /** + * Make sure all values are unique. + */ + $this->attributeList['class'] = array_unique( + $this->attributeList['class'] + ); + /** + * Sort nicely. + */ + natsort($this->attributeList['class']); + /** + * Order nicely. + */ + $this->attributeList['class'] = array_values( + $this->attributeList['class'] + ); + /** + * Return. + */ return $this; } - /** * Remove a class from classList - * @param string $value + * + * @param string|array $value The value to remove. + * * @return HtmlTag instance */ public function removeClass($value) { - if (!is_null($this->attributeList['class'])) { - unset($this->attributeList['class'][array_search($value, $this->attributeList['class'])]); + /** + * If the class list is not set or not an array + * return immediately. + */ + if (!(isset($this->attributeList['class']) + && is_array($this->attributeList['class'])) + ) { + return $this; + } + /** + * If our attributeList has no items in it, we + * don't need to perform any action. Return + * immediately. + */ + if (1 > count($this->attributeList['class'])) { + return $this; + } + /** + * Classes are separated by spaces. + * Attempt exploding the values on just a space. + */ + if (!is_array($value)) { + if (false !== strpos($value, ' ')) { + $value = explode(' ', $value); + } + } + /** + * If value is an array process it as such. + */ + if (is_array($value)) { + /** + * Trim all the entries. + */ + $value = array_map( + 'trim', + $value + ); + /** + * Filter our results to remove null/blanks. + */ + $value = array_filter($value); + /** + * If there is no data return immediately. + */ + if (1 > count($value)) { + return $this; + } + /** + * Ensure the values are all unique. + */ + $value = array_unique($value); + /** + * This just gets the difference between + * the current list and what we want to remove. + */ + $diff = array_diff( + $this->attributeList['class'], + $value + ); + /** + * If there is no data return immediately. + */ + if (1 > count($diff)) { + return $this; + } + /** + * Ensure our diff values are unique. + */ + $diff = array_unique($diff); + /** + * Sort nicely. + */ + natsort($diff); + /** + * Order nicely. + */ + $diff = array_values($diff); + /** + * Set up our new list. + */ + $this->attributeList['class'] = $diff; + /** + * Return. + */ + return $this; + } + /** + * Trim the entry. + */ + $value = trim($value); + /** + * If there is no data return immediately. + */ + if (empty($value)) { + return $this; + } + /** + * Attempt to find the index that the value resides under. + */ + $index = array_search( + $value, + $this->attributeList['class'] + ); + /** + * If the index isn't found, return immediately. + */ + if (false === $index) { + return $this; } + /** + * Unset the element. + */ + unset($this->attributeList['class'][$index]); + /** + * Ensure all items are unique. + */ + $this->attributeList['class'] = array_unique( + $this->attributeList['class'] + ); + /** + * Sort nicely. + */ + natsort($this->attributeList['class']); + /** + * Reorder nicely. + */ + $this->attributeList['class'] = array_values( + $this->attributeList['class'] + ); + /** + * Return. + */ return $this; } } diff --git a/Markup.php b/Markup.php index 06ce10d..6594cdf 100755 --- a/Markup.php +++ b/Markup.php @@ -1,55 +1,121 @@ + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator */ namespace HtmlGenerator; - use ArrayAccess; - -if (!defined('ENT_XML1')) -{ - define('ENT_XML1', 16); +if (!defined('ENT_XML1')) { + define('ENT_XML1', 16); } -if (!defined('ENT_XHTML')) -{ - define('ENT_XHTML', 32); +if (!defined('ENT_XHTML')) { + define('ENT_XHTML', 32); } - - +/** + * Add's the tags information more dynamically. + * + * PHP version 5.3 + * + * @category Markup + * @package HtmlGenerator + * @author Airmanbzh + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator + */ class Markup implements ArrayAccess { - /** @var boolean Specifies if attribute values and text input sould be protected from XSS injection */ + /** + * Specifies if attribute values and text input + * should be protected from XSS injection. + * + * @var boolean + */ public static $avoidXSS = false; - - /** @var int The language convention used for XSS avoiding */ + /** + * The language convention used for XSS avoiding. + * + * @var int + */ public static $outputLanguage = ENT_XML1; - - protected static $_instance = null; - - protected $_top = null; - protected $_parent = null; - + /** + * The working instance. + * + * @var object + */ + protected static $instance = null; + /** + * Top elements. + * + * @var mixed + */ + protected $top = null; + /** + * Parent elements. + * + * @var mixed + */ + protected $parent = null; + /** + * The tag. + * + * @var string + */ protected $tag = null; + /** + * The attribute list. + * + * @var mixed + */ public $attributeList = null; + /** + * The class list. + * + * @var mixed + */ protected $classList = null; - + /** + * The content. + * + * @var string + */ protected $content = null; + /** + * The text. + * + * @var string + */ protected $text = ''; - + /** + * Auto closed. + * + * @var bool + */ protected $autoclosed = false; - + /** + * Void elements list. + * + * @var array + */ protected $autocloseTagsList = array(); - /** * Constructor - * @param mixed $tag - * @param Markup $top - * @return Markup instance + * + * @param mixed $tag The Tag to set. + * @param Markup $top The top to set. + * + * @return Markup */ protected function __construct($tag, $top = null) { $this->tag = $tag; - $this->_top =& $top; + $this->top =& $top; $this->attributeList = array(); $this->classList = array(); $this->content = array(); @@ -59,192 +125,241 @@ protected function __construct($tag, $top = null) } /** - * Builds markup from static context - * @param string $tag The tag name - * @param array $content The content of the current tag, first argument can be an array containing the attributes + * Builds markup from static context. + * + * @param string $tag The tag name. + * @param array $content The content of the current tag, + * first argument can be an array containing + * the attributes + * * @return Markup */ public static function __callStatic($tag, $content) { return self::createElement($tag) - ->attr(count($content) && is_array($content[0]) ? array_pop($content) : array()) - ->text(implode('', $content)); + ->attr( + ( + count($content) && is_array($content[0]) ? + array_pop($content) : + array() + ) + )->text( + implode('', $content) + ); } - /** * Add a children to the current element - * @param string $tag The name of the tag - * @param array $content The content of the current tag, first argument can be an array containing the attributes - * @return Markup instance + * + * @param string $tag The name of the tag + * @param array $content The content of the current tag, + * first argument can be an array + * containing the attributes + * + * @return Markup */ public function __call($tag, $content) { return $this ->addElement($tag) - ->attr(count($content) && is_array($content[0]) ? array_pop($content) : array()) - ->text(implode('', $content)); + ->attr( + ( + count($content) && is_array($content[0]) ? + array_pop($content) : + array() + ) + )->text( + implode('', $content) + ); } - /** - * Alias for getParent() + * Alias for getParent method. + * * @return Markup */ public function __invoke() { return $this->getParent(); } - /** * Create a new Markup - * @param string $tag - * @return Markup instance + * + * @param string $tag The tag to create. + * + * @return Markup */ public static function createElement($tag = '') { - self::$_instance = new static($tag); - return self::$_instance; + self::$instance = new static($tag); + return self::$instance; } /** + * Add element at an existing Markup. + * + * @param Markup|string $tag The element to add. * - * Add element at an existing Markup - * @param Markup|string $tag * @return Markup instance */ public function addElement($tag = '') { - $htmlTag = (is_object($tag) && $tag instanceof self) ? $tag : new static($tag); - $htmlTag->_top = $this->getTop(); - $htmlTag->_parent = &$this; - + $htmlTag = ( + is_object($tag) && $tag instanceof self ? + $tag : + new static($tag) + ); + $htmlTag->top = $this->getTop(); + $htmlTag->parent = &$this; $this->content[] = $htmlTag; return $htmlTag; } - /** * (Re)Define an attribute or many attributes - * @param string|array $attribute - * @param string $value + * + * @param string|array $attribute The attribute to add. + * @param string $value The value of the attribute to add. + * * @return Markup instance */ public function set($attribute, $value = null) { - if(is_array($attribute)) { - foreach ($attribute as $key => $value) { + if (is_array($attribute)) { + foreach ($attribute as $key => &$value) { $this[$key] = $value; + unset($value); } } else { $this[$attribute] = $value; } return $this; } - /** - * alias to method "set" - * @param string|array $attribute - * @param string $value + * Alias to method "set". + * + * @param string|array $attribute The attribute to add. + * @param string $value The value of the attribute to add. + * * @return Markup instance */ public function attr($attribute, $value = null) { - return call_user_func_array(array($this, 'set'), func_get_args()); + return call_user_func_array( + array($this, 'set'), + func_get_args() + ); } - /** * Checks if an attribute is set for this tag and not null * * @param string $attribute The attribute to test + * * @return boolean The result of the test */ public function offsetExists($attribute) { return isset($this->attributeList[$attribute]); } - /** - * Returns the value the attribute set for this tag + * Returns the value the attribute set for this tag. + * + * @param string $attribute The attribute to get. * - * @param string $attribute The attribute to get - * @return mixed The stored result in this object + * @return mixed The stored result in this object. */ public function offsetGet($attribute) { - return $this->offsetExists($attribute) ? $this->attributeList[$attribute] : null; + return ( + $this->offsetExists($attribute) ? + $this->attributeList[$attribute] : + null + ); } - /** * Sets the value an attribute for this tag * - * @param string $attribute The attribute to set - * @param mixed $value The value to set + * @param string $attribute The attribute to set. + * @param mixed $value The value to set. + * * @return void */ public function offsetSet($attribute, $value) { $this->attributeList[$attribute] = $value; } - /** * Removes an attribute * * @param mixed $attribute The attribute to unset + * * @return void */ public function offsetUnset($attribute) { - if ($this->offsetExists($attribute)) + if ($this->offsetExists($attribute)) { unset($this->attributeList[$attribute]); + } } - /** + * Define text content. * - * Define text content - * @param string $value - * @return Markup instance + * @param string $value The value of the text. + * + * @return Markup */ public function text($value) { - $this->addElement('')->text = static::$avoidXSS ? static::unXSS($value) : $value; + $this->addElement('')->text = ( + static::$avoidXSS ? + static::unXSS($value) : + $value + ); return $this; } - /** - * Returns the top element + * Returns the top element. + * * @return Markup */ public function getTop() { - return $this->_top===null ? $this : $this->_top; + return ( + $this->top === null ? + $this : + $this->top + ); } - /** - * * Return parent of current element + * + * @return Markup */ public function getParent() { - return $this->_parent; + return $this->parent; } - /** - * Return first child of parent of current object + * Return first child of parent of current object. + * + * @return mixed */ public function getFirst() { - return is_null($this->_parent) ? null : $this->_parent->content[0]; + return ( + is_null($this->parent) ? + null : + $this->parent->content[0] + ); } - /** - * Return previous element or itself - * - * @return Markup instance + * Return previous element or itself. + * + * @return Markup */ public function getPrevious() { $prev = $this; $find = false; - if (!is_null($this->_parent)) { - foreach ($this->_parent->content as $c) { + if (!is_null($this->parent)) { + foreach ($this->parent->content as $c) { if ($c === $this) { $find=true; break; @@ -256,16 +371,17 @@ public function getPrevious() } return $prev; } - /** - * @return Markup last child of parent of current object + * Returns Next child of parent of current object. + * + * @return Markup */ public function getNext() { $next = null; $find = false; - if (!is_null($this->_parent)) { - foreach ($this->_parent->content as $c) { + if (!is_null($this->parent)) { + foreach ($this->parent->content as $c) { if ($find) { $next = &$c; break; @@ -277,21 +393,27 @@ public function getNext() } return $next; } - /** - * @return Markup last child of parent of current object + * Returns Last child of parent of current object. + * + * @return Markup */ public function getLast() { - return is_null($this->_parent) ? null : $this->_parent->content[count($this->_parent->content) - 1]; + return ( + is_null($this->parent) ? + null : + $this->parent->content[count($this->parent->content) - 1] + ); } - /** - * @return Markup return parent or null + * Removes parent. + * + * @return Markup */ public function remove() { - $parent = $this->_parent; + $parent = $this->parent; if (!is_null($parent)) { foreach ($parent->content as $key => $value) { if ($parent->content[$key] == $this) { @@ -302,18 +424,18 @@ public function remove() } return null; } - /** - * Generation method + * Generation method. + * * @return string */ public function __toString() { return $this->getTop()->toString(); } - /** * Generation method + * * @return string */ public function toString() @@ -333,33 +455,53 @@ public function toString() } return $string; } - /** - * return current list of attribute as a string $key="$val" $key2="$val2" + * Returns current list of attributes as string. + * * @return string */ protected function attributesToString() { $string = ''; - $XMLConvention = in_array(static::$outputLanguage, array(ENT_XML1, ENT_XHTML)); + $XMLConvention = in_array( + static::$outputLanguage, + array(ENT_XML1, ENT_XHTML) + ); if (!empty($this->attributeList)) { - foreach ($this->attributeList as $key => $value) { - if ($value!==null && ($value!==false || $XMLConvention)) { - $string.= ' ' . $key; - if($value===true) { + foreach ($this->attributeList as $key => &$value) { + if ($value !== null + && ($value!==false + || $XMLConvention) + ) { + $string .= sprintf( + ' %s', + $key + ); + if ($value === true) { if ($XMLConvention) { $value = $key; } else { continue; } } - $string.= '="' . implode( - ' ', - array_map( - static::$avoidXSS ? 'static::unXSS' : 'strval', - is_array($value) ? $value : array($value) + $string .= sprintf( + '="%s"', + implode( + ' ', + array_map( + ( + static::$avoidXSS ? + 'static:unXSS' : + 'strval' + ), + ( + is_array($value) ? + $value : + array($value) + ) + ) ) - ) . '"'; + ); } } } @@ -367,7 +509,8 @@ protected function attributesToString() } /** - * return current list of content as a string + * Return current list of content as a string. + * * @return string */ protected function contentToString() @@ -381,24 +524,25 @@ protected function contentToString() return $string; } - /** - * Protects value from XSS injection by replacing some characters by XML / HTML entities + * Protects value from XSS injection by replacing some + * characters by XML / HTML entities. + * * @param string $input The unprotected value - * @return string A safe string + * + * @return string */ public static function unXSS($input) { - $return = ''; - if (version_compare(phpversion(), '5.4', '<')) - { - $return = htmlspecialchars($input); - } - else - { - $return = htmlentities($input, ENT_QUOTES | ENT_DISALLOWED | static::$outputLanguage); - } - + $return = ''; + if (version_compare(phpversion(), '5.4', '<')) { + $return = htmlspecialchars($input); + } else { + $return = htmlentities( + $input, + ENT_QUOTES | ENT_DISALLOWED | static::$outputLanguage + ); + } return $return; } } diff --git a/phpunit.xml b/phpunit.xml index 7598e3b..6d4cffd 100755 --- a/phpunit.xml +++ b/phpunit.xml @@ -5,4 +5,4 @@ ./tests/ - \ No newline at end of file + diff --git a/tests/HtmlTagTest.php b/tests/HtmlTagTest.php index eaab701..d581729 100755 --- a/tests/HtmlTagTest.php +++ b/tests/HtmlTagTest.php @@ -3,34 +3,34 @@ class HtmlTagTest extends PHPUnit_Framework_TestCase { public function testId() { - $div = HtmlGenerator\HtmlTag::createElement('div'); - $div->id('test'); + $div = HtmlGenerator\HtmlTag::createElement('div'); + $div->id('test'); $this->assertEquals($div, '
'); } public function testAddClass() { - $div = HtmlGenerator\HtmlTag::createElement('div'); - $div->addClass('test'); + $div = HtmlGenerator\HtmlTag::createElement('div'); + $div->addClass('test'); - $this->assertEquals($div, '
'); + $this->assertEquals($div, '
'); } public function testRemoveClass() { - $div = HtmlGenerator\HtmlTag::createElement('div'); - $div->addClass('test'); - $div->addClass('test2'); - $div->removeClass('test'); + $div = HtmlGenerator\HtmlTag::createElement('div'); + $div->addClass('test'); + $div->addClass('test2'); + $div->removeClass('test'); - $this->assertEquals($div, '
'); + $this->assertEquals($div, '
'); } - public function testAutoClose() - { - $br = HtmlGenerator\HtmlTag::createElement('br'); + public function testAutoClose() + { + $br = HtmlGenerator\HtmlTag::createElement('br'); - $this->assertEquals($br, '
'); - } -} \ No newline at end of file + $this->assertEquals($br, '
'); + } +} diff --git a/tests/MarkupTest.php b/tests/MarkupTest.php index 977cb53..631eca9 100755 --- a/tests/MarkupTest.php +++ b/tests/MarkupTest.php @@ -1,13 +1,13 @@ assertEquals(get_class(HtmlGenerator\Markup::createElement()), "HtmlGenerator\Markup"); @@ -22,36 +22,36 @@ public function testToString() public function testAddElement() { $div = HtmlGenerator\Markup::createElement('div'); - $div->addElement('p'); + $div->addElement('p'); $this->assertEquals($div, '

'); } public function testAttr() { $div = HtmlGenerator\Markup::createElement('div'); - $div->attr('id', 'testId'); + $div->attr('id', 'testId'); $this->assertEquals($div, '
'); } public function testSet() { $div = HtmlGenerator\Markup::createElement('div'); - $div->set('id', 'testId'); + $div->set('id', 'testId'); $this->assertEquals($div, '
'); } public function testSetWithArray() { $div = HtmlGenerator\Markup::createElement('div'); - $div->set(array('id' => 'testId', 'class' => 'test')); + $div->set(array('id' => 'testId', 'class' => 'test')); $this->assertEquals($div, '
'); } public function testText() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->text('text'); + ->addElement('p') + ->text('text'); $this->assertEquals($div, '

text

'); } @@ -59,10 +59,10 @@ public function testText() public function testGetParent() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getParent() - ->addElement('a'); + ->addElement('p') + ->addElement('a') + ->getParent() + ->addElement('a'); $this->assertEquals($div, '

'); } @@ -70,12 +70,12 @@ public function testGetParent() public function testGetFirst() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getParent() - ->addElement('a') - ->getFirst() - ->text('test'); + ->addElement('p') + ->addElement('a') + ->getParent() + ->addElement('a') + ->getFirst() + ->text('test'); $this->assertEquals($div, '

test

'); } @@ -83,15 +83,15 @@ public function testGetFirst() public function testGetLast() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getParent() - ->addElement('a') - ->getParent() - ->addElement('a') - ->getFirst() - ->getLast() - ->text('test'); + ->addElement('p') + ->addElement('a') + ->getParent() + ->addElement('a') + ->getParent() + ->addElement('a') + ->getFirst() + ->getLast() + ->text('test'); $this->assertEquals($div, '

test

'); } @@ -99,14 +99,14 @@ public function testGetLast() public function testGetPrevious() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getParent() - ->addElement('a') - ->getParent() - ->addElement('a') - ->getPrevious() - ->text('test'); + ->addElement('p') + ->addElement('a') + ->getParent() + ->addElement('a') + ->getParent() + ->addElement('a') + ->getPrevious() + ->text('test'); $this->assertEquals($div, '

test

'); } @@ -114,15 +114,15 @@ public function testGetPrevious() public function testGetNext() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getParent() - ->addElement('a') - ->getParent() - ->addElement('a') - ->getFirst() - ->getNext() - ->text('test'); + ->addElement('p') + ->addElement('a') + ->getParent() + ->addElement('a') + ->getParent() + ->addElement('a') + ->getFirst() + ->getNext() + ->text('test'); $this->assertEquals($div, '

test

'); } @@ -130,10 +130,10 @@ public function testGetNext() public function testGetTop() { $div = HtmlGenerator\Markup::createElement('div') - ->addElement('p') - ->addElement('a') - ->getTop() - ->text('test'); + ->addElement('p') + ->addElement('a') + ->getTop() + ->text('test'); $this->assertEquals($div, '

test
'); } @@ -141,37 +141,37 @@ public function testGetTop() public function testRemoveXSS() { $div = HtmlGenerator\Markup::createElement('div') - ->text('test'); + ->text('test'); $this->assertEquals(HtmlGenerator\Markup::unXSS($div), '<div>test</div>'); } - public function testMagicStatic() - { + public function testMagicStatic() + { - $div = HtmlGenerator\Markup::div() - ->text('test'); + $div = HtmlGenerator\Markup::div() + ->text('test'); - $this->assertEquals($div, '
test
'); - } + $this->assertEquals($div, '
test
'); + } - public function testMagic() - { + public function testMagic() + { - $div = HtmlGenerator\Markup::div() - ->b() - ->text('test'); + $div = HtmlGenerator\Markup::div() + ->b() + ->text('test'); - $this->assertEquals($div, '
test
'); - } + $this->assertEquals($div, '
test
'); + } - public function testMagicWithAttributes() - { + public function testMagicWithAttributes() + { - $div = HtmlGenerator\Markup::div() - ->b(array('id' => 'testId', 'tag' => 'tagTest')) - ->text('test'); + $div = HtmlGenerator\Markup::div() + ->b(array('id' => 'testId', 'tag' => 'tagTest')) + ->text('test'); - $this->assertEquals($div, '
test
'); - } -} \ No newline at end of file + $this->assertEquals($div, '
test
'); + } +} diff --git a/tests/autoloader.php b/tests/autoloader.php index ced7c81..bc4cacd 100755 --- a/tests/autoloader.php +++ b/tests/autoloader.php @@ -1,13 +1,45 @@ - + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator + */ +/** + * Autoloader file. + * + * @category Autoloader + * @package HtmlGenerator + * @author Airmanbzh + * @license http://opensource.org/licenses/mit-license.php MIT + * @link https://github.com/airmanbzh/php-html-generator + */ +/** + * Function performs the loading of classes. + * + * @param string $class The class to load. + * + * @return void + */ +function loader($class) +{ + $class = explode('\\', $class); + $class = array_pop($class); + + $file = sprintf( + '%s%s..%s%s.php', + __DIR__, + DIRECTORY_SEPARATOR, + DIRECTORY_SEPARATOR, + $class + ); + if (file_exists($file)) { + include $file; + } +} +spl_autoload_register('loader');