-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding PhpReader to implement php file reading as per #1334
- Loading branch information
Showing
3 changed files
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
<?php | ||
/** | ||
* PhpReader file | ||
* | ||
* PHP 5 | ||
* | ||
* CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> | ||
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) | ||
* | ||
* Licensed under The MIT License | ||
* Redistributions of files must retain the above copyright notice | ||
* | ||
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) | ||
* @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests | ||
* @package cake | ||
* @subpackage cake.tests.cases.libs | ||
* @since CakePHP(tm) v 2.0 | ||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php) | ||
*/ | ||
|
||
/** | ||
* PHP Reader allows Configure to load configuration values from | ||
* files containing simple PHP arrays. | ||
* | ||
* @package cake.libs.config | ||
*/ | ||
class PhpReader { | ||
/** | ||
* The path this reader finds files on. | ||
* | ||
* @var string | ||
*/ | ||
protected $_path = null; | ||
|
||
/** | ||
* Constructor for PHP Config file reading. | ||
* | ||
* @param string $path The path to read config files from. Defaults to CONFIGS | ||
*/ | ||
public function __construct($path = CONFIGS) { | ||
$this->_path = $path; | ||
} | ||
|
||
/** | ||
* Read a config file and return its contents. | ||
* | ||
* Keys with `.` will be treated as values in plugins. Instead of reading from | ||
* the initialized path, plugin keys will be located using App::pluginPath(). | ||
* | ||
* | ||
* @param string $key The identifier to read from. If the key has a . it will be treated | ||
* as a plugin prefix. | ||
* @return array Parsed configuration values. | ||
*/ | ||
public function read($key) { | ||
$file = $this->_path . $key . '.php'; | ||
if (!file_exists($file)) { | ||
throw new RuntimeException(__('Could not load configuration file: ') . $file); | ||
} | ||
include $file; | ||
if (!isset($config)) { | ||
return array(); | ||
} | ||
return $config; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
<?php | ||
/** | ||
* PhpConfigReaderTest | ||
* | ||
* PHP 5 | ||
* | ||
* CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> | ||
* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) | ||
* | ||
* Licensed under The MIT License | ||
* Redistributions of files must retain the above copyright notice | ||
* | ||
* @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) | ||
* @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests | ||
* @package cake | ||
* @subpackage cake.tests.cases | ||
* @since CakePHP(tm) v 2.0 | ||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php) | ||
*/ | ||
App::import('Core', 'config/PhpReader'); | ||
|
||
class PhpReaderTest extends CakeTestCase { | ||
/** | ||
* setup | ||
* | ||
* @return void | ||
*/ | ||
function setUp() { | ||
parent::setUp(); | ||
$this->path = TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'config'. DS; | ||
} | ||
/** | ||
* test reading files | ||
* | ||
* @return void | ||
*/ | ||
function testRead() { | ||
$reader = new PhpReader($this->path); | ||
$values = $reader->read('var_test'); | ||
$this->assertEquals('value', $values['Read']); | ||
} | ||
|
||
/** | ||
* Test an exception is thrown by reading files that don't exist. | ||
* | ||
* @expectedException RuntimeException | ||
* @return void | ||
*/ | ||
function testReadWithNonExistantFile() { | ||
$reader = new PhpReader($this->path); | ||
$reader->read('fake_values'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?php | ||
$config = array( | ||
'Read' => 'value', | ||
'Deep' => array( | ||
'Deeper' => array( | ||
'Deepest' => 'buried' | ||
) | ||
) | ||
); |