[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: инициализация класа
Unsiker
У меня есть 2 масива $config, $lang и объект какого то класа $data.
$config = array(); 
$lang = array();
$data = new DataClass;

Нужно написать калас, который будет работать с этими данными. Подскажите как инициализировать клас в PHP Что бы ему были доступны вышеуказаные данные?
Вариант global просьба не предлагать.



Спустя 22 минуты, 34 секунды (24.06.2011 - 08:13) Mirexzpalich написал(а):

$config = array();
$lang = array();
$data = new DataClass;
class myClass
{
$config = false;
$lang = false;
$data = false;

function myClass($config, $lang, $data)
{
$this->config = $config;
$this->lang = $lang;
$this->data = $data;
}

........
}


$newClass = new myClass($config, $lang, $data);



Спустя 25 минут, 25 секунд (24.06.2011 - 08:39) linker написал(а):
Mirexzpalich
Забываем про PHP4.
class myClass
{
protected $config = array();
protected $lang = array();
protected $data = null;

public function __construct(array $config, array $lang, DataClass $data)
{
$this->config = $config;
$this->lang = $lang;
$this->data = $data;
}

........
}

$config = array();
$lang = array();
$data = new DataClass;
$newClass = new myClass($config, $lang, $data);

Спустя 1 час, 28 минут, 15 секунд (24.06.2011 - 10:07) Unsiker написал(а):
Спасибо за ответ,
Но еще хотелось бы узнать как обращаться внутри класа myClass с $data - экземпляром DataClass.
по идее $this->data->somefunction();
а можно ли как стандартно: $data->somefunction() ?

Спустя 19 минут, 8 секунд (24.06.2011 - 10:26) linker написал(а):
Unsiker
Нет, $data - есть свойство объекта, а потому обращаться нужно $this->data

Спустя (24.06.2011 - 10:26) T1grOK написал(а):
Нет. У вас же свойство класса является классом.
Разве что если использовать наследование или если класс использовать в пределах метода другого класса.

Спустя 9 минут, 49 секунд (24.06.2011 - 10:36) Unsiker написал(а):
Да но, я только что попробовал:
class someClass {
public function __construct($config, $lang, $data) {
$this->config = $config;
$this->lang = $lang;

$test = $data->select_query("SELECT * FROM tablename", true);

echo "<pre>";
print_r($test);
echo "</pre>";
echo "Class init";
}
}

и ошибок не было, а $data->select_query выполнился коректно и вывел все результаты правильно. Версия PHP 5.2.4 . Разрешается ли такое использование? не будут ли проблемы совместимости с PHP 4?

Спустя 15 минут, 46 секунд (24.06.2011 - 10:52) linker написал(а):
Unsiker
В пределах конструктора такое возможно, ибо ему был передан параметр $data, но в других методах уже нет.

Спустя 10 часов, 41 минута, 39 секунд (24.06.2011 - 21:33) neadekvat написал(а):
Цитата (Unsiker @ 24.06.2011 - 11:36)
не будут ли проблемы совместимости с PHP 4?

Необоходимость совместимости скрипта с 4-ой версией чем-либо обоснована? Хостер и лень - не принимается. Не надо оглядываться на 4-ую версию, ибо уже в php 5.3 некоторые функции считаются устаревшими, хотя еще в php 5.2 таковыми не были.

Спустя 3 часа, 29 минут, 26 секунд (25.06.2011 - 01:03) Greg1978 написал(а):
stdClass, чё тут думать, логично и лаконично


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.