Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179

Обьявить массив в конструкторе

31.10.2013, 17:18. Показов 3821. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,есть кноструктор в классе в котором происходит заполнеине массива
Потом я этот массив использую в функциях этого же класса,но ничего не выходит.
Где ошибка?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class Display
{
 
        public function __construct()
    {       
        $data['news']= array(........);
    }   
 
        public function news()
    {       
        print_r($data['news'])
    }   
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2013, 17:18
Ответы с готовыми решениями:

Обьявить массив из 10 целых чисел. Инициализировать массив значениями введенными с клавиатуры
Обьявить массив из 10 целых чисел. Инициализировать массив значениями введенными с клавиатуры. Найти в массиве первое отрицательное число и...

Обьявить массив
Помогите пожалуйста заполнить первую половину четными,вторую степенями числа 2

Как обьявить массив в PROGMEM?
Есть такой вот код примерно #define symb_0 seg_a_MASK | seg_b_MASK | seg_c_MASK | seg_d_MASK | seg_e_MASK | seg_f_MASK #define...

22
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
31.10.2013, 18:15
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Display
{
 
public $data = Array ();
 
public function __construct()
{
$this -> data ['news']= array(........);
}
 
public function news()
{
print_r($this -> data['news'])
}
}
надо как то так..
посмотрите тут
http://www.php.su/learnphp/phpoo/
очень ясно написано
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 18:59  [ТС]
Я знаю что можно сделать так как вы написали,НО у меня этот массив используется именно как
$data
Как сделать так чтобы распечатать его можно было бы имеено так print_r($data['news'])?
Не используя $this
0
ищите меня в нирване
 Аватар для your_tremor
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
31.10.2013, 19:02
Цитата Сообщение от Xoma204 Посмотреть сообщение
Как сделать так чтобы распечатать его можно было бы имеено так print_r($data['news'])?
PHP
1
print_r($peremennaya_ekzemlar_klassa->data['news']);
0
 Аватар для JxF-TEAM
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
31.10.2013, 19:05
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Display
{
 
     
    public function __construct()
    {
    $GLOBALS [ 'data' ] ['news']= array ( 1 , 2 , 3);
    }
 
    public function news()
    {
    global $data;
    print_r($data['news']);
    }
}
0
ищите меня в нирване
 Аватар для your_tremor
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
31.10.2013, 19:06
если нужно именно $data
PHP
1
2
$data=$peremennaya_ekzemlar_klassa->data;
print_r($data);
Добавлено через 43 секунды
Цитата Сообщение от JxF-TEAM Посмотреть сообщение
global
фу..
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 20:43  [ТС]
Цитата Сообщение от your_tremor Посмотреть сообщение
если нужно именно $data
PHP
1
2
$data=$peremennaya_ekzemlar_klassa->data;
print_r($data);
Этот кусок должен быть в конструкторе?мне нужно чтобы в конструкторе формировался массив $data
А потом в остальных функциях я его мог использовать
0
ищите меня в нирване
 Аватар для your_tremor
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
31.10.2013, 20:53
Цитата Сообщение от Xoma204 Посмотреть сообщение
мне нужно чтобы в конструкторе формировался массив $data
А потом в остальных функциях я его мог использовать
в каких функциях? вы хотите создать глобальную переменную? Вы хотите все перемешать? Вы пытаетесь писать программу в ооп стиле или процедурно с global и прочими атавизмами? Как на асме и ц? Аналогом глобальных переменных в ооп являются статические члены классов. ооп и процедуры не мешайте - некрасиво будет, вам всякий скажет
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 20:59  [ТС]
Вот я писал в начале,вот такой код.Как его переделать чтобы заполнить массив $data?
В конструкторе может быть что угодно!
Мне главное чтобы в функции news(таких функций куча) можно было обратиться к массиву именно как $data!!а не $this->data и тд
Как это сделать?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class Display
{
 
public function __construct()
{   
$data['news']= array(........);
} 
 
public function news()
{   
print_r($data['news'])
} 
}
0
ищите меня в нирване
 Аватар для your_tremor
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
31.10.2013, 21:04
Цитата Сообщение от Xoma204 Посмотреть сообщение
Мне главное чтобы в функции news(таких функций куча) можно было обратиться к массиву именно как $data!!
по вашему примеру - $data есть глобальная переменная.. нафига вы за ооп тогда взялись? ооп и глобальные переменные совместимы конечно. и вывод в методах класса тоже(только в рамках говнокода)
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 21:14  [ТС]
Цитата Сообщение от your_tremor Посмотреть сообщение
по вашему примеру - $data есть глобальная переменная.. нафига вы за ооп тогда взялись? ооп и глобальные переменные совместимы конечно. и вывод в методах класса тоже(только в рамках говнокода)
Так как я написал не работает.Как исправить программу?
я пытался в конструкторе написать global $data;
но не помогло
0
ищите меня в нирване
 Аватар для your_tremor
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
31.10.2013, 22:09
Последний раз. Потому что следующий раз уже будет бесполезным:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class Display {
 
    protected $data=array();
 
    public function __construct() {
        $this->data['news'] = array(........);
    }
 
    public function news() {
        print_r($this->data['news'])
    }
 
}
Добавлено через 1 минуту
если вы занялись ооп, тогда забудьте про global
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 22:17  [ТС]
Цитата Сообщение от your_tremor Посмотреть сообщение
Последний раз. Потому что следующий раз уже будет бесполезным:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class Display {
 
    protected $data=array();
 
    public function __construct() {
        $this->data['news'] = array(........);
    }
 
    public function news() {
        print_r($this->data['news'])
    }
 
}
Добавлено через 1 минуту
если вы занялись ооп, тогда забудьте про global
Я же писал без $this->data!!!
Как???? чтобы в news было вот так print_r($news)!!!БЕЗ $this
Как это сделать???
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.10.2013, 22:18
Цитата Сообщение от your_tremor Посмотреть сообщение
фу..
идея - фу. Следовательно, и варианты реализации..
Xoma204, так а где необходимо обращение к переменной без $this ? Внутри класса или снаружи?
Если внутри - то чем не устраивает $this->... писать?
Если снаружи - пронаследуйтесь от ArrayObject..
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 22:33  [ТС]
Внутри класса,т.е в функциях этого класса
Потому что у меня куча функций и везде $data
Так как это сделать то?????кто знает??????
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
31.10.2013, 22:47
Xoma204, никак, $this-> - это штатный способ доступа к свойствам и методам того-же класса.
Предлагаю такой вариант:
PHP
1
2
3
4
5
6
7
<?php
class MyClass {
   public function metod_classa(){
       $d = &$this->data; //Дальше внути функции работать с $d как с $this->data
   }
}
?>
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 179
31.10.2013, 23:02  [ТС]
Цитата Сообщение от sKotenok Посмотреть сообщение
Xoma204, никак, $this-> - это штатный способ доступа к свойствам и методам того-же класса.
Предлагаю такой вариант:
PHP
1
2
3
4
5
6
7
<?php
class MyClass {
   public function metod_classa(){
       $d = &$this->data; //Дальше внути функции работать с $d как с $this->data
   }
}
?>
Но тогда мне в каждой функции этого класса приеться писать это: $d = &$this->data;
Так?
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
31.10.2013, 23:22
Xoma204, да, именно так.
Но, если вы обьявите переменную, как глобальную, в каждой функции придётся писать
global $data; (иначе объявится локальная с тем же именем) - что особо не лучше.
Можно сохранить что-то в константе, но с массивом так не выйдет. ( define('DATA', 'string, int or bool' )
Можно конечно перебрать массив и посохранять в константы все его значения, но писанины будет ещё больше, т.к. придётся о пересечении имён думать.

Но лучше всего - не париться вовсе и писать везде $this->data - потом читать проще будет, т.к. сразу ясно, откуда эта data взялась.
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 17
01.11.2013, 00:58
Попробуй так)
PHP
1
2
3
4
5
6
7
8
9
10
11
class Array1 {
 
static $arr=array();
public function __construct($e) {
self::$arr[]=$e;
}
 
public function printMassiv (){
print_r(self::$arr);
}
}
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.11.2013, 14:45
Цитата Сообщение от Xoma204 Посмотреть сообщение
Потому что у меня куча функций и везде $data
Это называется рефакторинг, и Вы его уже начали. Кто сказал, что будет легко? Залезли в троллейбус - извольте держаться крепче. Не хотите - падайте наздоровье.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2013, 14:45
Помогаю со студенческими работами здесь

Как обьявить указатель на двумерный массив?
обьясните на примере как обьявить указатель на двумерный массив и потом обращаться к элементам через указатель

Как правильно обьявить массив обьектов?
Есть класс CDate; как правильно обьявить массив обьектов данного класса?

Как обьявить массив неизвестного размера?
Помогите разобраться, есть класс, в котором обьявлен двумерный массив структур. Размер массива неизвестен, но должен быть определен во...

как обьявить массив указaтелей на обьекты класа
как обьявит массив указтелей на обьекты класа объявление T *obiecti=new T*; почему-то не вызывает конструктор объясните пожалуйста

Как обьявить и инициализировать массив константных значений?
Пробовал вот таким вот образом в заголовочном файле const int big_numbers = { 1000, 2000, 3000 }; error C2059: syntax error : '{'...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru