|
|
|
|
<?
class build_page
{
var $title=''; // Название страницы
var $charset=''; // Кодировка страницы
var $css=''; // Стили для страницы
var $meta=''; // Доп. параметры
var $text=''; // Сам текст вывода
function __construct()
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n
<HTML>\n<HEAD>\n';
}
function title()
{
echo "<TITLE>".$this->title."</TITLE>\n";
}
function charset()
{
echo '<meta http-equiv="Content-Type" content="text/html; charset='.$this-charset.'">\n';
}
function css()
{
echo '<link href="'.$this->css.'" rel="stylesheet" type="text/css">\n';
}
function meta()
{
echo $this-meta.'\n';
}
function text()
{
echo $this->text.'\n';
}
function __destruct()
{
echo '</body>\n</html>\n';
}
}
$page = new build_page;
$page->title = "testing";
$page->charset = "windows-1251";
$page->css = "main.css";
$page->text = "This is text in new page";
?>
|
Что не так? | |
|
|
|
|
|
|
|
для: Akira
(19.07.2005 в 17:50)
| | А может все так? | |
|
|
|
|
|
|
|
для: Akira
(19.07.2005 в 17:50)
| | Не вызываются методы класса, непонятно зачем натыканы \n в одиночных кавычках - они в них не интерпретируются, а выводятся как есть, в пару мест вместо -> только символ -. Всё это вы исправите и будет писать верно, но самое страшное методология - такой способ организации класса - это путь в никуда, вам придётся держать в голове какой метод за каким вызывать - это забота класса, никак не пользователя, я как минимум бы переписал класс следующим образом:
<?php
class build_page
{
var $title=''; // Название страницы
var $charset=''; // Кодировка страницы
var $css=''; // Стили для страницы
var $meta=''; // Доп. параметры
var $text=''; // Сам текст вывода
function __construct($title, $charset, $css, $meta, $text)
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD>';
$this->title = $title;
$this->charset = $charset;
$this->css = $css;
$this->meta = $meta;
$this->text = $text;
}
function output()
{
echo "<TITLE>".$this->title."</TITLE>";
echo '<meta http-equiv="Content-Type" content="text/html; charset='.$this->charset.'">';
echo '<link href="'.$this->css.'" rel="stylesheet" type="text/css">';
echo $this->meta;
echo "</head><body>";
echo $this->text;
}
function __destruct()
{
echo '</body></html>';
}
}
$page = new build_page("testing","windows-1251","main.css","","This is text in new page");
$page->output();
?>
|
Если хотите - дробите метод output() на кучу закрытых методов, но метод вывода должен быть один и вызываться один раз, это логично, одна операция - один метод. | |
|
|
|
|
|
|
|
для: cheops
(19.07.2005 в 18:34)
| | Насчет \n просто с Зенде писалось :) А мне такой подход больше нравиться, просто решил, что надо за ООП браться в полный рост. Я правельно понял функции __construct и __destruct.
Дело вто, что тот движок который я писал не удалось установить на выделенный сервер из-за специфики настроек. И поэтому я решил поступить, как мы обсцждали раньше т.е. создание простых хтмл страниц.
Я правельно понял назначение ООП? Может стоило процедурным методом?
Так же хочу написать код для распознования css стилей. Его как стоит исполнить?
ООП или процедурным методом? | |
|
|
|
|
|
|
|
для: Akira
(19.07.2005 в 20:03)
| | > Я правельно понял функции __construct и
>__destruct.
Да.
>Я правельно понял назначение ООП? Может стоило процедурным
>методом?
Да правильно, но ООП требует достаточно продуманного использования, как и структурное программирование - создать нечитабельный и сложный в сопровождении код на нём очень легко.
>Так же хочу написать код для распознования css стилей. Его
>как стоит исполнить?
Код можно выполнять в любом стиле - лишь бы он эффективно решал ваши задачи, если сейчас у вас главная задача освоить ООП - решайте её с испльзованием ООП... но будьте готовы, что со временем вы захотите его переписать по новой... | |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 00:21)
| | К сожелению или к счастью у меня не когда не получалось написать два кода полностью одинаковым, так же мне легче заново написать код чем разобрать страый :( Поэтому я думаю сопровождать как можно подробнее комментариями. | |
|
|
|
|
|
|
|
для: Akira
(20.07.2005 в 00:38)
| | >Поэтому я думаю
>сопровождать как можно подробнее комментариями.
Да к этому лучше привыкнуть - окупается :))) | |
|
|
|
|
|
|
|
для: cheops
(19.07.2005 в 18:34)
| | хм, не как не получаеться сохранить это в файл :( а не выводить. | |
|
|
|
|
|
|
|
для: Akira
(19.07.2005 в 20:17)
| | А как делаете? | |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 00:21)
| | Пытался заменить echo на $var[] т.е. поместить в массив. Это было ошибкой?
Предпологаеться, что из бд берем информацию и создаем страницу которая сохраняеться на сервере. | |
|
|
|
|
|
|
|
для: Akira
(20.07.2005 в 00:37)
| | нет должно работать - а где происходит запись в файл? Может так случиться, что в файл не попадёт '</body></html>' - так как в дестркутор, это последний выполняемый метод класса. | |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 00:47)
| | Рабочий код
<?php
class build_page
{
var $title=''; // Название страницы
var $charset=''; // Кодировка страницы
var $css=''; // Стили для страницы
var $meta=''; // Доп. параметры
var $text=''; // Сам текст вывода
var $filename = '' ; // Имя файла
var $txt = ''; // буферок
function __construct($title, $charset, $css, $meta, $text, $filename)
{
$this->title = $title;
$this->charset = $charset;
$this->css = $css;
$this->meta = $meta;
$this->text = $text;
$this->filename=fopen($filename, "w");
}
function output()
{
fwrite($this->filename,'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>'.$this->title.'</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset='.$this->charset.'">
<link href="'.$this->css.'" rel="stylesheet" type="text/css">
'.$this->meta.'
</head>
<body>
'.$this->text.'
</body>
</html>;');
}
function __destruct()
{
fclose($this->filename);
}
}
$page = new build_page("testing","windows-1251","main.css","","This is text in new page", "test.php");
$page->output();
?>
|
Просто не стого края подошел.
Скажите а $this-> Это как ярлык для переменной? Без ярлыка переменная будет видна только в той функции, где была создана?
Еще класс у нас build_page.А обьет класса это output.
Я правельно понимаю?
ЗЫ Черт, а может написать скрипт для проверки и исправления орфографических ошибок? | |
|
|
|
|
|
|
|
для: Akira
(20.07.2005 в 01:33)
| | Т.е. насколько я понял код работает?
>Скажите а $this-> Это как ярлык для переменной? Без ярлыка переменная будет
>видна только в той функции, где была создана?
Да $this-> сообщает, что переменная является членом класса, а не локальной переменной функции.
>Еще класс у нас build_page.А обьет класса это
>output.
>Я правельно понимаю?
Да, только объектом является $page, output() - это метод класса | |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 03:01)
| | Хорошо. Будем работать дальше :) | |
|
|
|