我问你的建议。 在我的php文件中有一些类。
class Template {
public $id;
public $title;
public $text;
public $description;
public $data = array();
public $content_html;
public $width_content = 500;
public $type;
public $time;
public $user;
public $category;
protected $CI;
// The next code works for a one element of array $data
function __construct($data = array()){
$this->title = $data['title'];
$this->text = $data['text'];
$this->category = $data['category'];
$this->type = $data['type'];
$this->time = $data['time'];
$this->CI =& get_instance();
$this->user = new InformationUser($data);
}
class Articles extends Template {
}
class News extends Template {
}
class Init {
public $posts = array('type' => 2);
}
我的课程的起点是一个班级Init。 在这个类中有一些用户帖子。 在每个元素数组中都有一个类型值,它定义了我必须创建的对象类。 例如:
class Init {
function define(){
foreach($this->posts as $val){
if($val['type'] == 2){
$article = new Articles($val);
//TODO $articles
} else if($val['type'] == 3){
$news = new News($val);
//TODO $news
}
}
}
}
我知道变种是错误的,最好将所有数组 posts()放到课堂上。但我不能这样做。 我需要,对于不同类型的数组元素 - 要分开工作(对于新闻 - 新闻类,文章 - 类文章等) 你有什么建议我的?
答案 0 :(得分:1)
从提供的最小信息中......我假设你正在寻找这样的东西:
<?php
class Init {
public static function define($type, $text)
{
switch($type) {
case 1:
return new Articles($text);
break;
case 2:
return new News($text);
break;
default:
throw new Exception('Undefined type');
}
}
}
// $template = Init::define(1, 'article text');
// $template = Init::define(2, 'news text');