diff --git a/FluentInterface/FluentInterface.php b/FluentInterface/SQL.php similarity index 73% rename from FluentInterface/FluentInterface.php rename to FluentInterface/SQL.php index c7a7e7a..84034da 100644 --- a/FluentInterface/FluentInterface.php +++ b/FluentInterface/SQL.php @@ -1,6 +1,6 @@ <?php -namespace DesignPatterns; +namespace DesignPatterns\FluentInterface; /** * fluent interface pattern @@ -52,9 +52,15 @@ class SQL $this->_where[] = $condition; return $this; } + + /** + * Gets the query, just an example of building a query, + * no check on consistency + */ + public function getQuery() + { + return 'SELECT ' . implode(',', $this->_fields) + . ' FROM ' . implode(',', $this->_from) + . ' WHERE ' . implode(' AND ', $this->_where); + } } - -$instance = new SQL(); -$instance->select(array('foo', 'bar')) - ->from('foobar', 'f') - ->where('f.bar = ?'); \ No newline at end of file diff --git a/Tests/FluentInterface/FluentInterfaceTest.php b/Tests/FluentInterface/FluentInterfaceTest.php new file mode 100644 index 0000000..7dec8d8 --- /dev/null +++ b/Tests/FluentInterface/FluentInterfaceTest.php @@ -0,0 +1,28 @@ +<?php + +/* + * DesignPatternPHP + */ + +namespace DesignPatterns\Tests\FluentInterface; + +use DesignPatterns\FluentInterface\SQL; + +/** + * FluentInterfaceTest tests the fluent interface SQL + */ +class FluentInterfaceTest extends \PHPUnit_Framework_TestCase +{ + + public function testBuildSQL() + { + $instance = new SQL(); + $query = $instance->select(array('foo', 'bar')) + ->from('foobar', 'f') + ->where('f.bar = ?') + ->getQuery(); + + $this->assertEquals('SELECT foo,bar FROM foobar AS f WHERE f.bar = ?', $query); + } + +} \ No newline at end of file