|
|
|
| Хотел бы по подробнее..а то даже из книги не понятно =(( | |
|
|
|
|
|
|
|
для: Akira
(06.12.2004 в 00:43)
| | Глава занимает 40 страниц - подробнее в форуме вряд ли получится... А если серьёзно в чём затруднение?
1) Зачем всё это?
2) Философия ООП.
3) Синтаксис.
4) Конкретные задачи?
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=641 | |
|
|
|
|
|
|
|
для: cheops
(06.12.2004 в 01:03)
| | На простейшем примере...НУ незнаю...чего нибудь , для разгону.
Мне только в сам процесс въехать.... | |
|
|
|
|
|
|
|
для: Akira
(06.12.2004 в 01:25)
| | Ну хорошо, вот пример... сообщение форума. Для того чтобы им оперировать (вывести или поместить в базу данных) требуется масса различных переменных:
$name - имя пользователя
$email - пароль
$id_author - первичный ключ пользователя в базе
$post - само сообщение
$puttime - время его добавления
$id_post - первичный ключ сообщения
$id_theme - первичный ключ темы, которой он принадлежит
$status - закрытое сообщение, открытое или скрытое
С сообщением совершается массу операций:
1) создание
2) помещение в базу данных
3) извлечение
4) вывод в окно браузера
5) изменение его статуса
и т.п.
А учитывая, что у нас их может быть много, да для разных форумов желательно бы выводить сообщение с различным дизайном, было бы удобно созадать класс сообщения. Тогда создать сообщение можно было бы в одну строку
<?php
$mes = new message("$name, $email, $id_author,
$post, $puttime, $id_post, $id_theme, $status");
?>
|
При этом класс сам бы заботился бы о корректности вводимых данных. Нужно нам сохранить объект сообщения в базу данных: вызываем метод
и сообщение в базе, нужно вывести сообщение в окно браузера, с определённым дизайном
<?php
$mes->put_browser("base");
?>
|
и сообщение выведено, а не понравился данный вид дизайна, взяли и заменили на другой
<?php
$mes->put_browser("agression");
?>
|
и мы по преждему можем обратится к любой переменной сообщения
<?php
// Вывести имя автора
echo $mes->name;
// Скрыть сообщение
$mes->status = "hide";
?>
|
Дальше больше, можно создать класс темы форума, объект которой содержал бы коллекцию объектов сообщений, тогда вывод темы форума с предварительным извлечением из сообщений из базы может выглядеть следующим образом:
<?php
// Извлекаем из базы данных тему с первичным ключом 45
$thm = new theme(45);
// Сортируем сообщения по дате - можно добавить метод
// для прямой и обратной сортировке
$thm->sort_date();
// Выводим темы форума в окно браузера
for($i = 0; $i<$thm->count; ++$i)
{
$thm->message[i]->put_browser("agression");
}
?>
|
Как это выглядит без классов можно посмотреть в исходных текстах этого форума - /skel/read.php... После того, как классы разработаны писать код с использованием их безумно легко и удобно.
Это как с регулярными выражениями - изучать их свихнёшься, но, изучив можно с лёгкостью решать сложнейшие задачи, которые с помощью строковых функций (которые легко изучать) свихнёшься решать... Сложность задачи никуда не девается, но её можно спрятать создав сложные инструменты решения. Так же и с классами - они позволяют спрятать в себе сложность задачи. | |
|
|
|
|
|
|
|
для: cheops
(06.12.2004 в 02:21)
| | Так классы созданы для того , что бы обьеденять всебе наборы самалично и нет созданных функций?
Например если мне надо обработать послание письма, перевести с транслита, проверить заполнение и т.д. и т.п.
Тогда я создаю класс, запихиваю необходимые для этого функции, описываю действия и встовляю этот класс в нужный документ, и потом ТОЛЬКО подставляю в переменные данные...
Я правельон понял? | |
|
|
|
|
|
|
|
для: Akira
(10.12.2004 в 19:10)
| | В общем да, вы формализуете классом данные, а при создании объекта передаёте конкретные значения. | |
|
|
|
|
|
|
|
для: cheops
(10.12.2004 в 22:10)
| | Значит применение ООП вызвано лишь упращением? | |
|
|
|
|
|
|
|
для: Akira
(11.12.2004 в 10:21)
| | Хм... и языки высокого уровня созданы для упрощения работы программиста, поэтому все технологии, которые позволяют упростить процесс создания программ моментально внедряются, так как это снижает число ошибок и стоимость программ. Всё существующее программное обеспеченье возможно теоретически сделать в 10 раз меньше и в 10 раз быстрее, но практически это не достижимо, так как довести программные проекты до конца будет невозмножно. | |
|
|
|
|
|
|
|
для: cheops
(11.12.2004 в 12:35)
| | А не могли бы вы описания синтаксиса привести в class?
А то у меня не очень самому получаеться написать =( | |
|
|
|
|
|
|
|
для: Akira
(11.12.2004 в 14:07)
| | Если правильно понял, что речь идет о примере простого класса, то вот простой пример.
<?php
class PrintWords // объявляем класс
{
function method() // метод method класса PrintWords - просто чего-то печатает
{
echo("Привет!!!");
}
}
$obj = new PrintWords(); // объявляем объект obj класса PrintWords
$obj->method(); // вызываем метод этого класса, который и напечатает слово "Привет!!!"
?>
|
| |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(11.12.2004 в 21:46)
| | Блин, все равно не получаеться.
Пытаюсь применить класс для конвертирования кирилицы в UTF8
или транслит в кирилицу а потом в utf8
Все делаю функциями
<?
function rus($text)
{
$text = str_replace("ж","ж",$text);
$text = str_replace("ё","е",$text);
$text = str_replace("й","й",$text);
$text = str_replace("ю","ю",$text);
$text = str_replace("ь","ь",$text);
$text = str_replace("ч","ч",$text);
$text = str_replace("щ","щ",$text);
$text = str_replace("ц","ц",$text);
$text = str_replace("у","у",$text);
$text = str_replace("к","к",$text);
$text = str_replace("е","е",$text);
$text = str_replace("н","н",$text);
$text = str_replace("г","г",$text);
$text = str_replace("ш","ш",$text);
$text = str_replace("з","з",$text);
$text = str_replace("х","х",$text);
$text = str_replace("ъ","ъ",$text);
$text = str_replace("ф","ф",$text);
$text = str_replace("ы","ы",$text);
$text = str_replace("в","в",$text);
$text = str_replace("а","а",$text);
$text = str_replace("п","п",$text);
$text = str_replace("р","р",$text);
$text = str_replace("о","о",$text);
$text = str_replace("л","л",$text);
$text = str_replace("д","д",$text);
$text = str_replace("э","э",$text);
$text = str_replace("я","я",$text);
$text = str_replace("с","с",$text);
$text = str_replace("м","м",$text);
$text = str_replace("и","и",$text);
$text = str_replace("т","т",$text);
$text = str_replace("б","б",$text);
$text = str_replace("Ё","Е",$text);
$text = str_replace("Й","Й",$text);
$text = str_replace("Ю","Ю",$text);
$text = str_replace("Ч","Ч",$text);
$text = str_replace("Ь","Ь",$text);
$text = str_replace("Щ","Щ",$text);
$text = str_replace("Ц","Ц",$text);
$text = str_replace("У","У",$text);
$text = str_replace("К","К",$text);
$text = str_replace("Е","Е",$text);
$text = str_replace("Н","Н",$text);
$text = str_replace("Г","Г",$text);
$text = str_replace("Ш","Ш",$text);
$text = str_replace("З","З",$text);
$text = str_replace("Х","Х",$text);
$text = str_replace("Ъ","Ъ",$text);
$text = str_replace("Ф","Ф",$text);
$text = str_replace("Ы","Ы",$text);
$text = str_replace("В","В",$text);
$text = str_replace("А","А",$text);
$text = str_replace("П","П",$text);
$text = str_replace("Р","Р",$text);
$text = str_replace("О","О",$text);
$text = str_replace("Л","Л",$text);
$text = str_replace("Д","Д",$text);
$text = str_replace("Ж","Ж",$text);
$text = str_replace("Э","Э",$text);
$text = str_replace("Я","Я",$text);
$text = str_replace("С","С",$text);
$text = str_replace("М","М",$text);
$text = str_replace("И","И",$text);
$text = str_replace("Т","Т",$text);
$text = str_replace("Б","Б",$text);
return $text;
}
function trans($text)
{
$text = str_replace("ts","ц",$text);
$text = str_replace("ch","ч",$text);
$text = str_replace("sh'","щ",$text);
$text = str_replace("sh","ш",$text);
$text = str_replace("i'","ы",$text);
$text = str_replace("ya","я",$text);
$text = str_replace("yu","ю",$text);
$text = str_replace("yo","ё",$text);
$text = str_replace("e'","э",$text);
$text = str_replace("zh","ж",$text);
$text = str_replace("Yo","Ё",$text);
$text = str_replace("Zh","Ж",$text);
$text = str_replace("Ts","Ц",$text);
$text = str_replace("Ch","Ч",$text);
$text = str_replace("Sh'","Щ",$text);
$text = str_replace("Sh","Ш",$text);
$text = str_replace("I'","Ы",$text);
$text = str_replace("E'","Э",$text);
$text = str_replace("Yu","Ю",$text);
$text = str_replace("Ya","Я",$text);
$text = str_replace("a","а",$text);
$text = str_replace("b","б",$text);
$text = str_replace("v","в",$text);
$text = str_replace("g","г",$text);
$text = str_replace("d","д",$text);
$text = str_replace("e","е",$text);
$text = str_replace("z","з",$text);
$text = str_replace("i","и",$text);
$text = str_replace("k","к",$text);
$text = str_replace("l","л",$text);
$text = str_replace("m","м",$text);
$text = str_replace("n","н",$text);
$text = str_replace("o","о",$text);
$text = str_replace("p","п",$text);
$text = str_replace("r","р",$text);
$text = str_replace("s","с",$text);
$text = str_replace("t","т",$text);
$text = str_replace("u","у",$text);
$text = str_replace("f","ф",$text);
$text = str_replace("h","х",$text);
$text = str_replace("_","ъ",$text);
$text = str_replace("'","ь",$text);
$text = str_replace("y","й",$text);
$text = str_replace("A","А",$text);
$text = str_replace("B","Б",$text);
$text = str_replace("V","В",$text);
$text = str_replace("G","Г",$text);
$text = str_replace("D","Д",$text);
$text = str_replace("E","Е",$text);
$text = str_replace("Z","З",$text);
$text = str_replace("I","И",$text);
$text = str_replace("Y","Й",$text);
$text = str_replace("K","К",$text);
$text = str_replace("L","Л",$text);
$text = str_replace("M","М",$text);
$text = str_replace("N","Н",$text);
$text = str_replace("O","О",$text);
$text = str_replace("P","П",$text);
$text = str_replace("R","Р",$text);
$text = str_replace("S","С",$text);
$text = str_replace("T","Т",$text);
$text = str_replace("U","У",$text);
$text = str_replace("F","Ф",$text);
$text = str_replace("H","Х",$text);
$text = str_replace("_","Ъ",$text);
$text = str_replace("'","Ь",$text);
return $text;
}
?>
|
Для вывода русского текста использую rus('Любой текст')
для транслита trans('Proverka')
для вывода транслита в utf8 rus(trans('Проверка'))
Как это пременить в классе?
т.е. упростить | |
|
|
|
|
|
|
|
для: Akira
(12.12.2004 в 12:19)
| | К примеру. Пусть Вы читаете текст из файла. Тогда Вам, к примеру, надо:
1. Открыть файл
2. Прочитать его
3. Сделать преобразования какие нужны с текстом
4. Вывести информацию
5. Закрыть файл
Действия, которые перечислены - это методы нашено предполагаемого класса. За двумя исключениями - открывать файл будет конструктор класса, закрывать - деструктор. Тогда все это может выглядеть примерно так:
<?php
class PrintWords
{
var $text;
var $file;
function __construct($filename) // конструктор класса
{
$this->file = fopen($filename, "r"); // открываем файл
}
function read() // метод, осуществляющий чтение данных из файла
{
$this->text = fread($this->file, 100);
}
function rus() // в этом методе делаем то, что надо с текстом
{
$this->text = str_replace("ж","ж",$this->text);
$this->text = str_replace("ц","ц",$this->text);
$this->text = str_replace("г","г",$this->text);
}
function print_data() // метод вывода данных
{
print $this->text;
}
function __destruct() // дектрутор, в нем - закрываем файл
{
fclose($this->file);
}
}
$obj = new PrintWords("c:/www/www1/file.txt");
$obj->rus();
$obj->read();
$obj->print_data();
?>
|
| |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(12.12.2004 в 16:15)
| | Спасибо =) надо будет паработать над этим =) | |
|
|
|
|