This is an example of autoloading classes and including unit tests.

This commit is contained in:
Beanow 2014-10-11 00:13:59 +02:00
parent cf1f60e092
commit dd6987ff02
7 changed files with 90 additions and 2 deletions

3
.gitignore vendored
View File

@ -2,5 +2,4 @@
.htconfig.php
#*
favicon.*
tests/coverage.html

2
Makefile Normal file
View File

@ -0,0 +1,2 @@
test:
cd tests && phpunit --coverage-html=coverage.html && x-www-browser ./coverage.html/index.html

41
autoload.php Normal file
View File

@ -0,0 +1,41 @@
<?php
spl_autoload_register(function ($class) {
// the package namespace
$ns = 'Friendica\Directory';
// what prefixes should be recognized?
$prefixes = array(
"{$ns}\\" => array(
__DIR__ . '/src',
__DIR__ . '/tests/unit/src',
),
);
// go through the prefixes
foreach ($prefixes as $prefix => $dirs) {
// does the requested class match the namespace prefix?
$prefix_len = strlen($prefix);
if (substr($class, 0, $prefix_len) !== $prefix) {
continue;
}
// strip the prefix off the class
$class = substr($class, $prefix_len);
// a partial filename
$part = str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
// go through the directories to find classes
foreach ($dirs as $dir) {
$dir = str_replace('/', DIRECTORY_SEPARATOR, $dir);
$file = $dir . DIRECTORY_SEPARATOR . $part;
if (is_readable($file)) {
require $file;
return;
}
}
}
});

View File

@ -1,5 +1,6 @@
<?php
require_once('autoload.php');
require_once('boot.php');
$a = new App;

10
src/Example/Hello.php Normal file
View File

@ -0,0 +1,10 @@
<?php namespace Friendica\Directory\Example;
class Hello
{
public function sayHello(){
return 'Hello world!';
}
}

12
tests/phpunit.xml Normal file
View File

@ -0,0 +1,12 @@
<phpunit bootstrap="../autoload.php">
<testsuites>
<testsuite>
<directory>unit/src</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory>../src</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -0,0 +1,23 @@
<?php namespace Friendica\Directory\Example;
class HelloTest extends \PHPUnit_Framework_TestCase
{
/**
* Test the sayHello() method.
*/
public function testSayHello()
{
//Create a new Hello class instance.
$instance = new Hello();
//Call the method sayHello() that we want to test.
$output = $instance->sayHello();
//Check that it returns the message we expect.
$this->assertEquals("Hello world!", $output);
}
}