Парни, я создал первый в жизни класс. Точнее два (страница и товар).
Я пока учусь. Посмотрите пожалуйста, есть ли ГРУБЫЕ ошибки в грамматике кода. И вообще это ООП стиль или пока еще процедурный?
<?php
class myPage
{
private $h1;
private $content;
private $css = array();
private $js = array();
public function set_h1($text)
{
$this->h1 = '<h1>'.$text.'</h1>';
}
public function append_Content($content)
{
$this->content .= $content;
}
public function insert_Css($res)
{
$this->css[] = $res;
}
private function css_files2html($arr)
{
if(!is_array($arr) || count($arr) == 0)
{
return;
}
static $code;
foreach($arr as $v)
{
$code .= '<link href="'.$v.'" type="text/css" rel="stylesheet" />';
}
return $code;
}
public function createPage()
{
$repl = array(
'{content}' => $this->h1.'<div class="content">'.$this->content.'</div>',
'{links}' => $this->css_files2html($this->css)
);
return strtr(file_get_contents('theme/template.html'), $repl);
}
}
class myProduct
{
private $id;
private $name;
private $price;
public function __construct($id, $name, $price)
{
$this->id = $id;
$this->name = $name;
$this->price = $price;
}
public function __destruct()
{
}
public function product_Create()
{
static $code;
$code = '<div class="product-item-'.$this->id.'">';
$code .= '<h3>'.$this->name.'</h3>';
$code .= '<p>Цена: '.$this->price.' руб.</p>';
$code .= '</div>';
return $code;
}
}
/************* CODE *************/
$page = new myPage();
echo $page->insert_Css('/theme/main.css');
echo $page->insert_Css('/theme/print.css');
$url = 'about/'; //temp
$result = $mysqli->query("SELECT * FROM `pages` WHERE `url` = '".$url."'");
if($result->num_rows == 1)
{
$row = $result->fetch_assoc();
$page->set_h1($row['h1']); //set h1
$page->append_Content($row['text']); //append text of page
}
else
{
$page->set_h1('404 Page not found');
}
$result->close();
//random append content for page
$page->append_Content(file_get_contents('theme/promo_block.html'));
//Вывод будет потом из БД.
$temp_pro = array(
1 => array('name' => 'Товар1', 'price' => '1000'),
2 => array('name' => 'Товар2', 'price' => '4000'),
3 => array('name' => 'Товар3', 'price' => '2000')
);
$product_obj = '';
foreach($temp_pro as $key => $val)
{
$product_obj = new myProduct($key, $val['name'], $val['price']); //create product
$page->append_Content( $product_obj->product_Create() ); // append product
}
echo $page->createPage(); //output page
Меня особенно волнует правильно ли я наполняю переменные для return-на. Не люблю кгда return много строчный. В классе я так понял это статичная переменная лучше подходит.