保留闭合字符完整性的分割字符串方法
问题描述:在处理一批csv数据文件时,发现string字段由双引号闭合,每个字段间用逗号区分。使用了explode进行分割为数组后,发现其中地址字段包含逗号,也意味着地址字段会被切割为两段,于是我有了第一套方案:使用双引号分割。但是发现日期、数值、金额类型的字段均没有闭合字符,因此无法准确分割。于是造了车子。
问题描述:在处理一批csv数据文件时,发现string字段由双引号闭合,每个字段间用逗号区分。使用了explode进行分割为数组后,发现其中地址字段包含逗号,也意味着地址字段会被切割为两段,于是我有了第一套方案:使用双引号分割。但是发现日期、数值、金额类型的字段均没有闭合字符,因此无法准确分割。于是造了车子。
在前端控制器进行渲染时,假如不通过硬编码的方式,而通过自动加载配置来实现前端模版渲染的话那对于程序猿以及项目的二次开发而言都是极好的。
在代码上,将前端模版渲染的行为动作提取共性,使用观察者模式在渲染时自动加载配置
减少冗余代码,减少后期开发和维护的工程量,增加代码复用性
在不失灵活性的前提下,保证各前端控制器模板渲染的个性(独立性)
自动配置减少了开发的难度,对于流程的开发更加清晰
...More...
代码示例下载:20150217.rar
class Coder
{
public function write($name)
{
echo $name . ' finish<br/>';
}
}
class Manager
{
protected $_member = array();
public function __set($name, Coder $value)
{
$this->_member[$name] = $value;
}
public function work()
{
foreach ($this->_member as $name => $coder) {
$coder->write($name);
}
}
}
$manager = new Manager();
$john = new Coder();
$mike = new Coder();
$manager->John = $john;
$manager->Mike = $mike;
$manager->work();
Delegation是一种设计模式,我翻译它为委派模式。它通过经理类来督促并分配任务给指定的码农来完成代码工作。
class Grandfather
{
public static $_age = 80;
public static function age()
{
echo self::$_age . '<br/>';
}
//后期静态绑定
public static function staicAge()
{
echo static::$_age . '<br/>';
}
//get_called_class()方式后期静态绑定
public static function getAge()
{
$obj = get_called_class();
echo $obj::$_age;
}
}
class Father extends Grandfather
{
public static $_age = 50;
}
class Son extends Father
{
public static $_age = 20;
}
//测试
Son::age();
Son::staicAge();
Son::getAge();
上述两行的调用大家猜测下最终结果是什么?
最近时不时的会去学习下设计模式,在DesignPatternsPHP学习中,发现一个特别喜欢的设计模式————FluentInterface,我找不到它的翻译。我个人把它理解为连贯操作/级联操作。在实际中,我发现ThinkPHP和Typecho中均使用了这种模式,并且都在数据库操作类使用这种模式进行连贯操作。于是我用这个模式编写了一个计算器类Calculator,代码如下: