implement abstract class for ArrayAccess interface
This commit is contained in:
parent
f19332afaf
commit
a921d0bb69
4 changed files with 113 additions and 43 deletions
|
@ -9,6 +9,7 @@ define('THEMES_DIR', ROOT_DIR .'themes/');
|
|||
define('CACHE_DIR', LIB_DIR .'cache/');
|
||||
|
||||
require(ROOT_DIR .'vendor/autoload.php');
|
||||
require_once LIB_DIR . 'Pico/Model/AbstractModel.php';
|
||||
require_once LIB_DIR . 'Pico/Model/Meta.php';
|
||||
require(LIB_DIR .'pico.php');
|
||||
$pico = new Pico();
|
||||
|
|
107
lib/Pico/Model/AbstractModel.php
Normal file
107
lib/Pico/Model/AbstractModel.php
Normal file
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
|
||||
namespace Pico\Model;
|
||||
|
||||
/**
|
||||
* Abstract model which implements the ArrayAccess interface
|
||||
*
|
||||
* @author Frank Nägler
|
||||
* @link http://pico.dev7studios.com
|
||||
* @license http://opensource.org/licenses/MIT
|
||||
* @version 0.1
|
||||
*/
|
||||
class AbstractModel implements \ArrayAccess {
|
||||
protected $data = array();
|
||||
|
||||
public function get($key) {
|
||||
return (isset($this->data[$key])) ? $this->data[$key] : null;
|
||||
}
|
||||
|
||||
public function set($key, $value) {
|
||||
$this->data[$key] = $value;
|
||||
}
|
||||
|
||||
public function __get($name) {
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
public function __set($name, $value) {
|
||||
$this->set($name, $value);
|
||||
}
|
||||
|
||||
public function __call($name, $args) {
|
||||
if (strpos($name, 'get') !== false) {
|
||||
$name = substr($name, 3);
|
||||
return $this->get($name);
|
||||
}
|
||||
if (strpos($name, 'set') !== false) {
|
||||
$name = substr($name, 3);
|
||||
return $this->set($name, $args[0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* (PHP 5 >= 5.0.0)<br/>
|
||||
* Whether a offset exists
|
||||
*
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetexists.php
|
||||
* @param mixed $offset <p>
|
||||
* An offset to check for.
|
||||
* </p>
|
||||
* @return boolean true on success or false on failure.
|
||||
* </p>
|
||||
* <p>
|
||||
* The return value will be casted to boolean if non-boolean was returned.
|
||||
*/
|
||||
public function offsetExists($offset) {
|
||||
return (isset($this->data[$offset]));
|
||||
}
|
||||
|
||||
/**
|
||||
* (PHP 5 >= 5.0.0)<br/>
|
||||
* Offset to retrieve
|
||||
*
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetget.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to retrieve.
|
||||
* </p>
|
||||
* @return mixed Can return all value types.
|
||||
*/
|
||||
public function offsetGet($offset) {
|
||||
return $this->get($offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* (PHP 5 >= 5.0.0)<br/>
|
||||
* Offset to set
|
||||
*
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetset.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to assign the value to.
|
||||
* </p>
|
||||
* @param mixed $value <p>
|
||||
* The value to set.
|
||||
* </p>
|
||||
* @return void
|
||||
*/
|
||||
public function offsetSet($offset, $value) {
|
||||
$this->set($offset, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* (PHP 5 >= 5.0.0)<br/>
|
||||
* Offset to unset
|
||||
*
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetunset.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to unset.
|
||||
* </p>
|
||||
* @return void
|
||||
*/
|
||||
public function offsetUnset($offset) {
|
||||
if ($this->offsetExists($offset)) {
|
||||
unset($this->data[$offset]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,12 +10,10 @@ namespace Pico\Model;
|
|||
* @license http://opensource.org/licenses/MIT
|
||||
* @version 0.1
|
||||
*/
|
||||
class Meta {
|
||||
protected $headers = array();
|
||||
|
||||
class Meta extends AbstractModel {
|
||||
public function __construct($rawData = null) {
|
||||
if ($rawData !== null) {
|
||||
$this->parseRawData($rawData);
|
||||
$this->setRawData($rawData);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,28 +21,13 @@ class Meta {
|
|||
$this->parseRawData($rawData);
|
||||
}
|
||||
|
||||
public function get($key) {
|
||||
return (isset($this->headers[$key])) ? $this->headers[$key] : null;
|
||||
}
|
||||
|
||||
public function getFormattedDate() {
|
||||
global $config;
|
||||
if (isset($this->headers['date'])) {
|
||||
return date($config['date_format'], strtotime($this->headers['date']));
|
||||
if (isset($this->data['date'])) {
|
||||
return date($config['date_format'], strtotime($this->data['date']));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function __get($name) {
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
public function __call($name, $args) {
|
||||
if (strpos($name, 'get') !== false) {
|
||||
$name = substr($name, 3);
|
||||
return $this->get($name);
|
||||
}
|
||||
}
|
||||
|
||||
protected function parseRawData($rawData) {
|
||||
$metaPart = substr($rawData, 0, strpos($rawData, '*/'));
|
||||
|
@ -55,7 +38,7 @@ class Meta {
|
|||
$parts = explode(':', $line);
|
||||
$key = array_shift($parts);
|
||||
$val = implode($parts);
|
||||
$this->headers[$key] = trim($val);
|
||||
$this->set($key, trim($val));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: franae
|
||||
* Date: 23.10.13
|
||||
* Time: 21:10
|
||||
*/
|
||||
|
||||
namespace Pico\Model;
|
||||
|
||||
|
||||
class Page {
|
||||
protected $title;
|
||||
protected $url;
|
||||
protected $author;
|
||||
protected $date;
|
||||
# protected $date_formatted;
|
||||
protected $content;
|
||||
protected $excerpt;
|
||||
protected $meta;
|
||||
}
|
Loading…
Add table
Reference in a new issue