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

Форум PHP

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

 

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

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

тема: Пользовательские глобальные внутри класса
 
 автор: newProgrammer   (06.04.2009 в 00:37)   письмо автору
 
 

Всем доброго времени суток!

У меня такой вопрос. Есть класс, работающий с экземпляром класса MySQL, который в свою очередь устанавливает соединение с БД. Как лучше, практичнее импортировать переменную, обозначающую экземпляр класса MySQL, в класс, который работает с этим экземпляром.

Можно передать переменную на этот экземпляр методу в качестве параметра:
<?php
$mysql 
= new MySQL;

class 
MyClass {
     public function 
method($mysql) {
          
$mysql->query("");
     }
}
?>

Можно объявить эту переменную глобальной внутри метода:
<?php
$mysql 
= new MySQL;

class 
MyClass {
     public function 
method() {
          global 
$mysql;
          
$mysql->query("");
     }
}
?>

Из двух второй вариант мне нравится больше, т.к. не нужно передавать эту переменную каждый раз при вызове метода, тем более если ты заранее знаешь, что в этом методе тебе понадобится экземпляр класса MySQL.

Наверняка многие из тех, кто работает с классами встречались с такой необходимостью. Поделитесь опытом. Подскажите какие минусы и плюсы у этих двух вариантов. Может еще как-нибудь можно осуществить данную задумку?

Заранее благодарю.

  Ответить  
 
 автор: maxtet   (06.04.2009 в 01:36)   письмо автору
 
   для: newProgrammer   (06.04.2009 в 00:37)
 

Насколько я понимаю в классах переменные необходимо предварительно объявлять. В отличие от обычных пользовательских функций переменные, объявленные в свойствах класса, доступны для любого метода этого класса. К тому же в приводимых Вами примерах вы допускаете ошибку - создаете экземпляр несуществующего класса MySQL.

  Ответить  
 
 автор: Loki   (06.04.2009 в 10:56)   письмо автору
 
   для: newProgrammer   (06.04.2009 в 00:37)
 

Я пошел вторым путем, так как в случае первого варианта приходилось передавать и другие используемые внутри класса экземпляры классов, что довольно быстро начинало раздражать. Есть еще вариант объявить эти классы внутри текущего, а снаружи вызывать их через него, но что-то он мне совсем не нравится.

  Ответить  
 
 автор: newProgrammer   (07.04.2009 в 16:46)   письмо автору
 
   для: Loki   (06.04.2009 в 10:56)
 

Спасибо. Я так и сделаю.

  Ответить  
Rambler's Top100
вверх

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