Правильно ли я создал класс? Парни, я создал первый в жизни класс. Точнее два (страница и товар). Я пока учусь. Посмотрите пожалуйста, есть ли ГРУБЫЕ ошибки в грамматике кода. И вообще это ООП стиль или пока еще процедурный?h1 = ''.$text.''; }
public function append_Content($content) { $this->content .= $content; }
public function insert_Css($res) { $this->css[] = $res; }
$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 много строчный. В классе я так понял это статичная переменная лучше подходит.
Код, который вы написали, вполне соответствует объектно-ориентированному программированию (ООП). Однако есть несколько замечаний:
В методе css_files2html у вас используется статическая переменная $code, которая не очищается перед каждым вызовом метода. Это может привести к накоплению значений от предыдущих вызовов. Лучше не использовать статические переменные в данном случае.
В методе product_Create у вас также используется статическая переменная $code, которая не является обязательной. Можно просто объявить переменную внутри метода и возвращать ее значение без сохранения состояния между вызовами.
В методе insert_Css вы вызываете метод echo, который не возвращает ничего, поэтому вызов $page->insert_Css не будет отображать ничего. Лучше возвращать результат из данного метода и выводить его вне класса.
В цикле foreach($temp_pro as $key => $val) у вас внутри цикла вы заменяете переменную $product_obj на новый объект. Это приведет к тому, что на выходе из цикла у вас будет только последний созданный объект. Лучше использовать массив для хранения объектов.
При динамическом добавлении контента в класс myPage вы можете использовать методы для возврата этого контента, например, getH1(), getContent() и т.д.
Лучше использовать типизацию аргументов в методах классов (PHP 7+), чтобы улучшить понимание кода и предотвратить ошибки.
Разбейте ваш код на более мелкие части, например, создайте отдельный класс для работы с базой данных.
Надеюсь, эти замечания помогут вам улучшить ваш код. Удачи в дальнейшем изучении ООП!
Код, который вы написали, вполне соответствует объектно-ориентированному программированию (ООП). Однако есть несколько замечаний:
В методе css_files2html у вас используется статическая переменная $code, которая не очищается перед каждым вызовом метода. Это может привести к накоплению значений от предыдущих вызовов. Лучше не использовать статические переменные в данном случае.
В методе product_Create у вас также используется статическая переменная $code, которая не является обязательной. Можно просто объявить переменную внутри метода и возвращать ее значение без сохранения состояния между вызовами.
В методе insert_Css вы вызываете метод echo, который не возвращает ничего, поэтому вызов $page->insert_Css не будет отображать ничего. Лучше возвращать результат из данного метода и выводить его вне класса.
В цикле foreach($temp_pro as $key => $val) у вас внутри цикла вы заменяете переменную $product_obj на новый объект. Это приведет к тому, что на выходе из цикла у вас будет только последний созданный объект. Лучше использовать массив для хранения объектов.
При динамическом добавлении контента в класс myPage вы можете использовать методы для возврата этого контента, например, getH1(), getContent() и т.д.
Лучше использовать типизацию аргументов в методах классов (PHP 7+), чтобы улучшить понимание кода и предотвратить ошибки.
Разбейте ваш код на более мелкие части, например, создайте отдельный класс для работы с базой данных.
Надеюсь, эти замечания помогут вам улучшить ваш код. Удачи в дальнейшем изучении ООП!