Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по Классам.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Вячеслав
Отправлено: 03 Августа, 2009 - 11:53:45
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Никак немогу разобраться в классах, примеры в интернете настолько есть глупые что просто неприятно читать ету ересь, очень хотелось бы увидеть пример написания классов на "рабочем коде" а не выдуманых функциях a,b,foo,bar.
Собственно задачу я себе поставил такую - написать класс для работы с Яндекс почтой, в целях обучения, написал 3 функции побыстрому, теперь прошу помочь мне из этих трех функций сколотить класс и прокоментировать все действия.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function ya_auth($login,$pass)
  4. {
  5.         global $error;
  6.         global $errno;
  7.         global $result;
  8.         global $auth;
  9.  
  10. $url = 'https://passport.yandex.ru/passport?mode=auth';
  11. $referer = 'https://passport.yandex.ru/passport?mode=auth';
  12. $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  13. $post = "login=$login&passwd=$pass";
  14. $ch = curl_init($url);
  15.         curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  16.         curl_setopt($ch, CURLOPT_REFERER, $referer);
  17.         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  18.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  19.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  20.         curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  21.         curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  22.         curl_setopt($ch, CURLOPT_POST, 1);
  23.         curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  24.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  25. $result = curl_exec($ch);
  26. $errno = curl_errno($ch);
  27. $error = curl_error($ch);
  28. if($errno == 0)
  29. {
  30.         if(preg_match('#<!--<h1>(.*?)<\/h1>-->#',$result,$matches))
  31.         {
  32.                 $fio = $matches[1];
  33.                 echo $fio;
  34.                 $auth = '1';
  35.                 } else {
  36.                         $error = 'Неавторизовались  =(';
  37.                         echo $error;
  38.                         $auth = '0';
  39.                 }
  40. } else {
  41.         echo $error;
  42. }
  43.         return $result;
  44.         return $errno;
  45.         return $error;
  46.         return $auth;
  47. }
  48. ###########################################################################
  49. function count_money()
  50. {
  51.         global $error;
  52.         global $errno;
  53.         global $auth;
  54.         global $balance;
  55.        
  56.        
  57. if($auth == 1)
  58. {
  59.  
  60.                 $url = 'http://money.yandex.ru/';
  61.                 $referer = 'https://passport.yandex.ru/passport?mode=auth';
  62.                 $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  63.                 $ch = curl_init($url);
  64.                         curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  65.                         curl_setopt($ch, CURLOPT_REFERER, $referer);
  66.                         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  67.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  68.                         curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  69.                         curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  70.                         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  71.                 $result = curl_exec($ch);
  72.                 $errno = curl_errno($ch);
  73.                 $error = curl_error($ch);
  74.                 curl_close($ch);
  75.                 if($errno == 0)
  76.                 {
  77.                         if(preg_match('#<span id="current-user-balance">(.*?)<\/span>#',$result,$matches))
  78.                         {
  79.                                 $balance = $matches[1];
  80.                                
  81.                         } else {
  82.                                 $balance = 'Баланс неопределен.';
  83.                                
  84.                         }
  85. }
  86.        
  87. } else  {
  88.                         $error = 'Вы не авторизованы.';
  89.                        
  90.                 }
  91. return $balance;
  92. }
  93. ###############################################################################
  94. function ya_mail()
  95. {
  96.         global $auth;
  97.         if($auth == 1)
  98. {
  99.                 $url = 'http://mail.yandex.ru';
  100.                 $referer = 'https://passport.yandex.ru/passport?mode=auth';
  101.                 $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  102.                 $ch = curl_init($url);
  103.                         curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  104.                         curl_setopt($ch, CURLOPT_REFERER, $referer);
  105.                         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  106.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  107.                         curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  108.                         curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  109.                         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  110.                 $result = curl_exec($ch);
  111.                 $errno = curl_errno($ch);
  112.                 $error = curl_error($ch);
  113.                 curl_close($ch);
  114.                 if($errno == 0)
  115.                 {
  116.                         if(preg_match('#<title>(.*?)<\/title>#',$result,$matches))
  117.                         {
  118.                                 $mail = $matches[1];
  119.                                 $mail = iconv('utf-8','cp1251',$mail);
  120.                                 echo $mail;
  121.                         }
  122.                 }
  123. } else  {
  124.                         $error = 'Вы не авторизованы.';
  125.                 }
  126. }
  127. ?>
  128.  
 
 Top
valenok Модератор
Отправлено: 03 Августа, 2009 - 13:03:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Не надо свои вопросы в уроки вставлять.
И иди читай про foo и bar если не понятно как в функции в классе объявить.
http://php.net/manual/en/language.oop5.basic.php


-----
Truly yours, Sasha.
 
My status
 Top
Вячеслав
Отправлено: 03 Августа, 2009 - 14:28:27
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Попросил же не давать примеров с фу-барами оффовскими. Таких советников ненада =\ Если кому-то не сложно, хотелось бы увидеть пример класса с моими функциями, буду очень признателен.
(Добавление)
PS сори, но тему с вопросами я у вас ненашел.
 
 Top
JustUserR
Отправлено: 03 Августа, 2009 - 14:47:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Вячеслав А откуда вы взяли API яндекса?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Вячеслав
Отправлено: 03 Августа, 2009 - 15:14:31
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




JustUserR
А где вы видите API =) Обыкновенный cURL и поиск по регуляркам.
 
 Top
Nestor
Отправлено: 03 Августа, 2009 - 15:56:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Вячеслав, начинать с простого надо.Прочитай про фу-бары, потом пробуй писать свои клсассы на основе фу-баров...

У тебя не класс получился, а набор функций.


-----
Aurus CMS
 
 Top
Stierus Супермодератор
Отправлено: 03 Августа, 2009 - 16:18:00
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class ya_mail{
  4.         private $error = array();
  5.         private $auth = false;
  6.        
  7.         public $fio = 'Неавторизированный пользователь';
  8.         public $balance = 'Баланс неопределен.';
  9.         public $mail = 'ХЗ какое письмо';
  10.        
  11.         public function __construct($login ='',$pass=''){
  12.                 if($login != '' and $pass!=''){
  13.                         $this->authorize($login ='',$pass='');
  14.                 }
  15.         }
  16.        
  17.         public function authorize($login ='',$pass=''){
  18.                 $url = 'https://passport.yandex.ru/passport?mode=auth';
  19.                 $referer = 'https://passport.yandex.ru/passport?mode=auth';
  20.                 $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  21.                 $post = "login=$login&passwd=$pass";
  22.                 $ch = curl_init($url);
  23.                
  24.             curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  25.             curl_setopt($ch, CURLOPT_REFERER, $referer);
  26.             curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  27.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  28.             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  29.             curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  30.             curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  31.             curl_setopt($ch, CURLOPT_POST, 1);
  32.             curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  33.             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  34.            
  35.                 $result = curl_exec($ch);
  36.                 $errno = curl_errno($ch);
  37.                 $error = curl_error($ch);
  38.                 curl_close($ch);
  39.                 if($errno == 0){
  40.                     if(preg_match('#<!--<h1>(.*?)<\/h1>-->#',$result,$matches)){
  41.                         $this->fio = $matches[1];
  42.                         $this->auth = true;
  43.                         }
  44.                         else {
  45.                                 $this->error[] = 'Неавторизовались  =(';
  46.                                 $this->fio = 'Неавторизированный пользователь';
  47.                                 $this->auth = false;
  48.                         }
  49.                 } else {
  50.                     $this->error[] = $error;
  51.                     $this->fio = 'Неавторизированный пользователь';
  52.                     $this->auth = false;
  53.                 }
  54.             return $this->auth;
  55.         }
  56.        
  57.         function count_money(){
  58.                 if($this->auth){
  59.                         /*
  60.                         тут сам сделаешь проверку значения $this->balance, возможно,
  61.                         нам и не нужно обращаться к удаленному серверу, т.к. результат у нас уже есть
  62.                         */
  63.                 $url = 'http://money.yandex.ru/';
  64.                 $referer = 'https://passport.yandex.ru/passport?mode=auth';
  65.                 $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  66.                 $ch = curl_init($url);
  67.                
  68.                         curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  69.                         curl_setopt($ch, CURLOPT_REFERER, $referer);
  70.                         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  71.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  72.                         curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  73.                         curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  74.                         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  75.                        
  76.                 $result = curl_exec($ch);
  77.                 $errno = curl_errno($ch);
  78.                 $error = curl_error($ch);
  79.                 curl_close($ch);
  80.                 if($errno == 0){
  81.                     if(preg_match('#<span id="current-user-balance">(.*?)<\/span>#',$result,$matches)){
  82.                         $this->balance = $matches[1];  
  83.                     }
  84.                     else{
  85.                         $this->balance = 'Баланс неопределен.';
  86.                     }
  87.                         }
  88.                         else{
  89.                                 $this->error[] = $error;
  90.                                 $this->balance = 'Баланс неопределен.';
  91.                         }
  92.                 }
  93.                 else{
  94.                         $this->error[] = 'Вы не авторизованы.';
  95.                         $this->balance = 'Баланс неопределен.';
  96.                 }
  97.                
  98.                 return $this->balance;
  99.         }
  100.        
  101.         function ya_mail(){
  102.             if($this->auth){
  103.                 /*
  104.                         тут сам сделаешь проверку значения $this->mail, возможно,
  105.                         нам и не нужно обращаться к удаленному серверу, т.к. результат у нас уже есть
  106.                         */
  107.                 $url = 'http://mail.yandex.ru';
  108.                 $referer = 'https://passport.yandex.ru/passport?mode=auth';
  109.                 $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
  110.                 $ch = curl_init($url);
  111.                
  112.                         curl_setopt($ch, CURLOPT_USERAGENT, $ua);
  113.                         curl_setopt($ch, CURLOPT_REFERER, $referer);
  114.                         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  115.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  116.                         curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  117.                         curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
  118.                         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  119.                        
  120.                 $result = curl_exec($ch);
  121.                 $errno = curl_errno($ch);
  122.                 $error = curl_error($ch);
  123.                 curl_close($ch);
  124.                 if($errno == 0){
  125.                     if(preg_match('#<title>(.*?)<\/title>#',$result,$matches)){
  126.                         $mail = $matches[1];
  127.                         $this->mail = iconv('utf-8','cp1251',$mail);
  128.                     }
  129.                     else{
  130.                         $this->mail = 'ХЗ какое письмо';
  131.                     }
  132.                 }
  133.                 else{
  134.                         $this->mail = 'ХЗ какое письмо';
  135.                                 $this->error[] = $error;
  136.                         }
  137.                 }
  138.                 else{
  139.                         $this->error[] = 'Вы не авторизованы.';
  140.                 }
  141.                
  142.                 return $this->mail;
  143.         }
  144. }
  145.  
  146. ?>


Сами функции не смотрел, просто в класс все вывел.
 
My status
 Top
Вячеслав
Отправлено: 03 Августа, 2009 - 17:06:18
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)




Stierus
Благодарю, теперь более понятно.

Nestor
Мне несовсем понятно когда обучаешся на хрен знает чем )) Почему не пишут мануалы которые легко читаемы, к примеру такой ког усваивается с первого раза:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class CodeStr
  4. {
  5.         var $str;
  6.  
  7.         function str_to_md5($str)
  8.         {
  9.                 $this->str = md5($str);
  10.                 echo $this->str;
  11.         }
  12.         function str_to_hex($str)
  13.         {
  14.                 $this->str = bin2hex($str);
  15.                 echo $this->str;
  16.         }
  17.         function str_to_base64($str)
  18.         {
  19.                 $this->str = base64_encode($str);
  20.                 echo $this->str;
  21.         }
  22. }      
  23.  
  24. $a = new CodeStr();
  25. $str = $a->str= '123';
  26. $a->str_to_md5($str);
  27.  
  28. ?>
  29.  


А читать на примере ФуБаров, можно свехнуться, тяжело же иметь представления и запоминать функции которые ничего не делают, намного легче все на практических примерах выполняющих определенное действие.
Цитата:
У тебя не класс получился, а набор функций.

Дык я ж и не писал что у меня класс, я просил из набора функций слепить Класс, для наглядного пособия.
Всем еще раз спасибо.
 
 Top
Stierus Супермодератор
Отправлено: 03 Августа, 2009 - 17:09:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




http://forum.php.su/topic.php?fo...17978#1232017978 так легче учиться, чем на якобы жизненных примерах Улыбка
 
My status
 Top
Champion Супермодератор
Отправлено: 04 Августа, 2009 - 12:03:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вячеслав пишет:
Попросил же не давать примеров с фу-барами оффовскими. Таких советников ненада =\
Не по теме, но не могу не высказаться. Объясните мне особенности такого скалада ума.
Ты полагаешь, что если функции назвать не фу или бар, а еще как-то, то процесс добавления её в класс чем-то изменится? Фу-бар - он на то и нужен, чтобы механизьм продемонстрировать, а уж что ты на его месте напишешь - от тебя зависит
 
 Top
JustUserR
Отправлено: 04 Августа, 2009 - 18:36:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Тоже не могу не высказаться Улыбка Вероятно дело в следующем факте - зачастую при обучении может быть неясна какаято мелочь (К примеру в терминологии) и эта мелочь напрочь мешает всему усвоению материала
Вероятно у человека понятия foo и bar вызывают непонятности (Особенности если сравнивать их русские транскрипции - что например "фу" и "бар" имеют отношение к программированию - а когда заместо них другие слова то все понятно становится Улыбка)
PS Это мое ИМХО


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB