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
Форумы портала PHP.SU :: Версия для печати :: Как cURL указатель сделать глобальным?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как cURL указатель сделать глобальным?

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

1. Ezi - 13 Февраля, 2012 - 01:45:41 - перейти к сообщению
Всем привет, учусь ООП, возникла такая проблема, пишу класс, во всём классе идет использование курла, я в конструкторе написал:

PHP:
скопировать код в буфер обмена
  1.     public function __construct() {
  2.         $ch = curl_init();
  3.         curl_setopt($ch, CURLOPT_COOKIESESSION, 0);
  4.         curl_setopt($ch, CURLOPT_VERBOSE, 1);
  5.         curl_setopt($ch, CURLOPT_USERAGENT, $this->brouser);
  6.         curl_setopt($ch, CURLOPT_HEADER, 0);
  7.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8.     }


А как теперь мне бы сделать чтобы указатель на курл был виден во всем скрипте и всех других функциях?
2. sKaa - 13 Февраля, 2012 - 01:52:38 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. class classname {
  2.  private $ch;
  3.   public function __construct() {
  4.         $ch = curl_init();
  5.         curl_setopt($ch, CURLOPT_COOKIESESSION, 0);
  6.         curl_setopt($ch, CURLOPT_VERBOSE, 1);
  7.         curl_setopt($ch, CURLOPT_USERAGENT, $this->brouser);
  8.         curl_setopt($ch, CURLOPT_HEADER, 0);
  9.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.         $this->ch = $ch;
  11.     }
  12.  
  13.  
  14. }
3. Ezi - 13 Февраля, 2012 - 01:56:03 - перейти к сообщению
А зачем свойство CH делать приватным?))
4. sKaa - 13 Февраля, 2012 - 01:58:43 - перейти к сообщению
Ezi а зачем его делать публичным если с этим указателем будет работать только этот класс? - привычка, стаж как никак )))
5. Ezi - 13 Февраля, 2012 - 02:05:15 - перейти к сообщению
sKaa, благодарю, всё работает!

А подскажи о правилах хорошего тона в коде, как правильно имя класса обзывать, методы, и свойства, ну например одно начинать с большой буквы, другое с маленькой, ну и т.п.?


Вообще первый день ООП осваиваю, хорошая концепция, очень удобно разрабатывать скрипты + редактор кода СУПЕР (phpDesigner)

(Добавление)
А ещё, по какой схеме делать файлы настроек, ну я бота допустим пишу, для нубов отдельный файлик с настройками есть, я там обзываю переменные, затем в скрипте свойству класса назначаю эту переменную, верное ли решение?))
6. sKaa - 13 Февраля, 2012 - 02:14:43 - перейти к сообщению
Ezi сложно сказать. У всех свой "тон" в коде. Думаю надо самому для себя определиться в каком стиле ты будешь всё делать.
Я например стараюсь к имени приватных методов дописывать "__" - "__clear_data()", чтоб сразу было видно что метод приватный. Название класса у меня всегда с заглавной.
Как называть классы, методы и свойства - по прямому их назначению. Наверное это всё с опытом приходит )
(Добавление)
Ezi пишет:
А ещё, по какой схеме делать файлы настроек, ну я бота допустим пишу, для нубов отдельный файлик с настройками есть, я там обзываю переменные, затем в скрипте свойству класса назначаю эту переменную, верное ли решение?))

Я не до конца понял саму мысль. Если можно пример приведи, что у тебя там за насторойки и зачем ты их классу в свойства суешь )
7. Ezi - 13 Февраля, 2012 - 02:23:12 - перейти к сообщению
sKaa пишет:
Я не до конца понял саму мысль. Если можно пример приведи, что у тебя там за насторойки и зачем ты их классу в свойства суешь )


Ну например логин осушествляется по ссылке с логином и хеш суммой пароля, User Agent(опционально) тоже можно указать, дак вот логин-ссылку я и пихаю в класс, хотя её можно и как параметр метода сувать, но Юзер агент то опционален, поэтому в классе стандартный указан, а если юзер пожелал его изменить на свой, то тогда его уже будет использоваться
8. sKaa - 13 Февраля, 2012 - 02:42:09 - перейти к сообщению
Вообще существуют паттерны(шаблоны) программирования. Чаще всего название паттерна уже подразумевает задачу паттерна. Registry, singleton, adapter, activerecord ... их очень много. Ты даже можешь пользоваться некоторыми и не зная что это паттерны )
В твоём случае подходит ActiveRecord - прочитай про него где нибудь. Хотя можно и без него, смотря какие задачи.
Нужен класс User

Спойлер (Отобразить)

И все остальные методы класса будут проверять свойство класса $auth, если оно = false, они будут возвращать "Пожалуйста авторизуйтесь."
Так вот если ещё и прикрутить ActiveRecord (class User extends ActiveUser { .. )
то смысл должен быть таким : изменение объекта User - будет сразу отражаться в базе.
Тогда не нужно будет каждый раз указывать UserAgent итд. Думаю как-то так в общих чертах.
9. Ezi - 13 Февраля, 2012 - 02:48:39 - перейти к сообщению
sKaa, Радость что-то мне кажется это уж слишком грубый план реализации моей задачи, но всё равно спасибо за советы! Про АктивРекорд сейчас почитаю))

 

Powered by ExBB FM 1.0 RC1