Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Классы
 
 автор: Akira   (06.12.2004 в 00:43)   письмо автору
 
 

Хотел бы по подробнее..а то даже из книги не понятно =((

   
 
 автор: cheops   (06.12.2004 в 01:03)   письмо автору
 
   для: Akira   (06.12.2004 в 00:43)
 

Глава занимает 40 страниц - подробнее в форуме вряд ли получится... А если серьёзно в чём затруднение?
1) Зачем всё это?
2) Философия ООП.
3) Синтаксис.
4) Конкретные задачи?

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=641

   
 
 автор: Akira   (06.12.2004 в 01:25)   письмо автору
 
   для: cheops   (06.12.2004 в 01:03)
 

На простейшем примере...НУ незнаю...чего нибудь , для разгону.
Мне только в сам процесс въехать....

   
 
 автор: cheops   (06.12.2004 в 02:21)   письмо автору
 
   для: 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_db();
?>

и сообщение в базе, нужно вывести сообщение в окно браузера, с определённым дизайном
<?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... После того, как классы разработаны писать код с использованием их безумно легко и удобно.
Это как с регулярными выражениями - изучать их свихнёшься, но, изучив можно с лёгкостью решать сложнейшие задачи, которые с помощью строковых функций (которые легко изучать) свихнёшься решать... Сложность задачи никуда не девается, но её можно спрятать создав сложные инструменты решения. Так же и с классами - они позволяют спрятать в себе сложность задачи.

   
 
 автор: Akira   (10.12.2004 в 19:10)   письмо автору
 
   для: cheops   (06.12.2004 в 02:21)
 

Так классы созданы для того , что бы обьеденять всебе наборы самалично и нет созданных функций?
Например если мне надо обработать послание письма, перевести с транслита, проверить заполнение и т.д. и т.п.
Тогда я создаю класс, запихиваю необходимые для этого функции, описываю действия и встовляю этот класс в нужный документ, и потом ТОЛЬКО подставляю в переменные данные...
Я правельон понял?

   
 
 автор: cheops   (10.12.2004 в 22:10)   письмо автору
 
   для: Akira   (10.12.2004 в 19:10)
 

В общем да, вы формализуете классом данные, а при создании объекта передаёте конкретные значения.

   
 
 автор: Akira   (11.12.2004 в 10:21)   письмо автору
 
   для: cheops   (10.12.2004 в 22:10)
 

Значит применение ООП вызвано лишь упращением?

   
 
 автор: cheops   (11.12.2004 в 12:35)   письмо автору
 
   для: Akira   (11.12.2004 в 10:21)
 

Хм... и языки высокого уровня созданы для упрощения работы программиста, поэтому все технологии, которые позволяют упростить процесс создания программ моментально внедряются, так как это снижает число ошибок и стоимость программ. Всё существующее программное обеспеченье возможно теоретически сделать в 10 раз меньше и в 10 раз быстрее, но практически это не достижимо, так как довести программные проекты до конца будет невозмножно.

   
 
 автор: Akira   (11.12.2004 в 14:07)   письмо автору
 
   для: cheops   (11.12.2004 в 12:35)
 

А не могли бы вы описания синтаксиса привести в class?
А то у меня не очень самому получаеться написать =(

   
 
 автор: Кузнецов М.В.   (11.12.2004 в 21:46)   письмо автору
 
   для: Akira   (11.12.2004 в 14:07)
 

Если правильно понял, что речь идет о примере простого класса, то вот простой пример.

<?php 
class PrintWords // объявляем класс
{
 function 
method() // метод method класса PrintWords - просто чего-то печатает
 
{
   echo(
"Привет!!!");       
 }
}
$obj = new PrintWords(); // объявляем объект obj класса PrintWords
$obj->method(); // вызываем метод этого класса, который и напечатает слово "Привет!!!"
?>

   
 
 автор: Akira   (12.12.2004 в 12:19)   письмо автору
 
   для: Кузнецов М.В.   (11.12.2004 в 21:46)
 

Блин, все равно не получаеться.
Пытаюсь применить класс для конвертирования кирилицы в UTF8
или транслит в кирилицу а потом в utf8
Все делаю функциями
<?
function rus($text)
{
$text str_replace("ж","&#x0436;",$text);
$text str_replace("ё","&#x0435;",$text);
$text str_replace("й","&#x0439;",$text);
$text str_replace("ю","&#x044e;",$text);
$text str_replace("ь","&#x044c;",$text);
$text str_replace("ч","&#x0447;",$text);
$text str_replace("щ","&#x0449;",$text);
$text str_replace("ц","&#x0446;",$text);
$text str_replace("у","&#x0443;",$text);
$text str_replace("к","&#x043a;",$text);
$text str_replace("е","&#x0435;",$text);
$text str_replace("н","&#x043d;",$text);
$text str_replace("г","&#x0433;",$text);
$text str_replace("ш","&#x0448;",$text);
$text str_replace("з","&#x0437;",$text);
$text str_replace("х","&#x0445;",$text);
$text str_replace("ъ","&#x044a;",$text);
$text str_replace("ф","&#x0444;",$text);
$text str_replace("ы","&#x044b;",$text);
$text str_replace("в","&#x0432;",$text);
$text str_replace("а","&#x0430;",$text);
$text str_replace("п","&#x043f;",$text);
$text str_replace("р","&#x0440;",$text);
$text str_replace("о","&#x043e;",$text);
$text str_replace("л","&#x043b;",$text);
$text str_replace("д","&#x0434;",$text);
$text str_replace("э","&#x044d;",$text);
$text str_replace("я","&#x044f;",$text);
$text str_replace("с","&#x0441;",$text);
$text str_replace("м","&#x043c;",$text);
$text str_replace("и","&#x0438;",$text);
$text str_replace("т","&#x0442;",$text);
$text str_replace("б","&#x0431;",$text);
$text str_replace("Ё","&#x0415;",$text);
$text str_replace("Й","&#x0419;",$text);
$text str_replace("Ю","&#x042e;",$text);
$text str_replace("Ч","&#x0427;",$text);
$text str_replace("Ь","&#x042c;",$text);
$text str_replace("Щ","&#x0429;",$text);
$text str_replace("Ц","&#x0426;",$text);
$text str_replace("У","&#x0423;",$text);
$text str_replace("К","&#x041a;",$text);
$text str_replace("Е","&#x0415;",$text);
$text str_replace("Н","&#x041d;",$text);
$text str_replace("Г","&#x0413;",$text);
$text str_replace("Ш","&#x0428;",$text);
$text str_replace("З","&#x0417;",$text);
$text str_replace("Х","&#x0425;",$text);
$text str_replace("Ъ","&#x042a;",$text);
$text str_replace("Ф","&#x0424;",$text);
$text str_replace("Ы","&#x042b;",$text);
$text str_replace("В","&#x0412;",$text);
$text str_replace("А","&#x0410;",$text);
$text str_replace("П","&#x041f;",$text);
$text str_replace("Р","&#x0420;",$text);
$text str_replace("О","&#x041e;",$text);
$text str_replace("Л","&#x041b;",$text);
$text str_replace("Д","&#x0414;",$text);
$text str_replace("Ж","&#x0416;",$text);
$text str_replace("Э","&#x042d;",$text);
$text str_replace("Я","&#x042f;",$text);
$text str_replace("С","&#x0421;",$text);
$text str_replace("М","&#x041c;",$text);
$text str_replace("И","&#x0418;",$text);
$text str_replace("Т","&#x0422;",$text);
$text str_replace("Б","&#x0411;",$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('Проверка'))
Как это пременить в классе?
т.е. упростить

   
 
 автор: Кузнецов М.В.   (12.12.2004 в 16:15)   письмо автору
 
   для: 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->file100);
 }

 function 
rus() // в этом методе делаем то, что надо с текстом
 

    
$this->text str_replace("ж","&#x0436;",$this->text); 
    
$this->text str_replace("ц","&#x0446;",$this->text);
    
$this->text str_replace("г","&#x0433;",$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(); 
?> 

   
 
 автор: Akira   (12.12.2004 в 16:56)   письмо автору
 
   для: Кузнецов М.В.   (12.12.2004 в 16:15)
 

Спасибо =) надо будет паработать над этим =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования