implement abstract class for ArrayAccess interface

This commit is contained in:
Frank Nägler 2013-10-24 19:28:13 +02:00
parent f19332afaf
commit a921d0bb69
4 changed files with 113 additions and 43 deletions

View file

@ -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();

View 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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]);
}
}
}

View file

@ -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));
}
}
}

View file

@ -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;
}