Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/145: Рейтинг темы: голосов - 145, средняя оценка - 4.59
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

Переменные внутри класса

08.04.2012, 17:59. Показов 26987. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
меня интересует как нужно правильно пользоваться переменными внутри класса

PHP
1
2
3
4
5
6
7
8
9
class A{
private $c,$d;
function funct($a){ // his тут никак не примениш, никак ли не не отразится если в основном коде будет $a
 $b=2; // аналогично если в основном коде будет $b
 $this->c=5;
 $this->d=$a+$b+$this->c;
 return $this->d;
 }
}
мне нужно чтобы переменные в классе никак не влияли на остальной код и также чтобы в основном коде их нельзя было было вызвать ( тоесть $A->b к примеру ).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2012, 17:59
Ответы с готовыми решениями:

Как получить переменные внутри класса
из одной функции переменную в другую, если делать так: class cauth_gadget extends cgadget { function getresources() { ...

Метод абстрактного класса не видит переменные дочернего класса
есть abstract class A{ protected static $dir; public static function f(){} } и два класса B,C наследника { protected static...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри самого класса? Насколько я знаю, для...

15
 Аватар для hatsub
61 / 60 / 7
Регистрация: 25.05.2011
Сообщений: 388
08.04.2012, 19:13
почитай про private public protected и static переменные, все сразу станет понятно.

Добавлено через 17 минут
внутри метода класса, обычные переменные $name никто не отменял.
private public protected используются для того, что бы использовать свойства/методы в двух или более методах и/или классах.
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
08.04.2012, 19:27  [ТС]
Цитата Сообщение от hatsub Посмотреть сообщение
внутри метода класса, обычные переменные $name никто не отменял.
private public protected используются для того, что бы использовать свойства/методы в двух или более методах и/или классах.
funct($a) - здесь же ничего не применишь а вот как оно на такую же переменную вне класса подействует?
0
 Аватар для hatsub
61 / 60 / 7
Регистрация: 25.05.2011
Сообщений: 388
08.04.2012, 20:17
если внутри метода использовать global $name; то переменная будет иметь значение переменной, которая была объявлена перед(вне) класса.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
$a = 'one';
 
class a {
 
public function func() {
 
global $a;
echo $a;
 
}
 
}
выведет: one
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
08.04.2012, 20:37  [ТС]
Цитата Сообщение от hatsub Посмотреть сообщение
если внутри метода использовать global $name; то переменная будет иметь значение переменной, которая была объявлена перед(вне) класса.
вы непоняли, я говорил за переменные которые применяются в функции, тоесть
PHP
1
2
function funct($a){
......
Цитата Сообщение от hatsub Посмотреть сообщение
global $a; echo $a;
если я не ошибаюсь то если переменную обьявили внутри класса то разве потом ее не через $this-> нужно вызывать?
0
 Аватар для hatsub
61 / 60 / 7
Регистрация: 25.05.2011
Сообщений: 388
08.04.2012, 20:49
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$a = 'google';
 
class A {
 
public static function func($str) {
 
 echo $str;
}
 
}
 
class B {
 
private $b;
 
public function __construct() {
 
 global $a;
 
 A::func($a);
 
 $this->b = $a;
 $this->help();
}
 
private function help() {
 
 echo 'очень много информации всегда есть в '.$this->b;
 
}
}
 
$B = new B;
должно работать.

Добавлено через 58 секунд
googleочень много информации всегда есть в google
0
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 4
10.04.2012, 15:12
вообще то это не переменные а описания класса, а функции методы
0
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
27.05.2012, 19:52
PHP
1
private static $c,$d;
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
27.05.2012, 21:42
за global в ООП надо руки отрывать
1
252 / 8 / 0
Регистрация: 12.11.2009
Сообщений: 170
27.06.2012, 09:50
Добрый день! Понемногу разбираюсь с ООП. Но зашел в тупик. Много чего прочел, не все понял. Вопрос следующий.

Есть у меня класс А которые реализован Синглетон'е. т.е.

я его вызываю так
PHP
1
2
3
$a = A::getInstance();
$a->load('config.ini');
echo $a->arr; // вернет массив данных
пускай этот класс отрабатывает какой то файл конфигурации т.е. достает и преобазовывает инфу из файла в массив

Но мне нужно использовать этот массив в другом классе. Как это правильно сделать. меня итерисует можно ли
в начале класса прописать нечто подобное
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class B {
 
var $b;
...
 
function C {
$a = A::getInstance();
$this->b = $a;
//бла-бла-бла
}
 
function D {
echo $this->b;
}
}
Как то подобное можно реализовать, и будет ли правильным такой доход. Все мои попытки приводят к этому
Code
1
Using $this when not in object context in
Наставьте на путь истинный!!!
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
27.06.2012, 09:57
полный код в студию. ты пытаешься вызвать this в статическом классе, а это не работает/ ты плохо прочел документацию по классам и в частности http://www.php.net/manual/ru/l... erties.php

Как это правильно сделать
http://yandex.ru/yandsearch?te... %B4%D0%B5+[Agile+DokuWiki]&clid=1570780&lr=213
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
27.06.2012, 16:02
мне нужно чтобы переменные в классе никак не влияли на остальной код
Что ты подразумеваешь под "влиянием переменной" одному богу ведомо, но лучше научись давать переменным вменяемые имена а не a b c
0
12 / 18 / 2
Регистрация: 02.11.2015
Сообщений: 222
27.07.2018, 07:31
а как быть с предопределёнными глобальными переменными вроде $_SERVER? Выходит их нельзя использовать при объявлении свойства:

PHP
1
2
3
4
5
6
7
8
9
class MyClass
{
    var $host  = $_SERVER['HTTP_HOST'];
// return: Parse error: syntax error, unexpected '$_SERVER' (T_VARIABLE) in ....
        public function __construct()
        {
                echo "Class is created!\n";
        }
}
Свойства класса, которым необходимо присвоить значение глобальной предопределённой переменной $_SERVER через конструктор. Это нормальное поведение, или можно какой-нибудь настройкой обойти?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.07.2018, 08:33
Цитата Сообщение от Eskander88 Посмотреть сообщение
Это нормальное поведение
Да.
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
31.07.2018, 14:06
Цитата Сообщение от Eskander88 Посмотреть сообщение
предопределёнными глобальными переменными
может как то так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?PHP 
 
 
class MyClass
{
    private  $host;
 
 
        public function __construct($a)
        {
                echo $this->host=$a." Class is created!\n";
        }
}
 
 
 
$a = new MyClass($_SERVER['HTTP_HOST']);
 
?>
0
31.07.2018, 14:19

Не по теме:

некрофилы. Чувак на четверке пытается писать. Тема 12 года

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2018, 14:19
Помогаю со студенческими работами здесь

Вызов метода одного класса внутри другого класса
PHP передача метода, с класса, в другой класс Столкнулся с проблемой не могу передать метод или функцию с одного класса в другой ...

Использование функции класса внутри другого класса
И снова к нашим баранам.. Я задавал подобный вопрос, но тут возникла такая трабла: есть класс, который подключается извне //подключаем...

Вбить в переменную данные за пределом класса и достать эти данные внутри класса
$bd =1; class cl { public function __construct() { print_r($bd); } } Как сделать так чтобы вбить в переменную...

Переменные экземпляра, класса, константы и переменные readonly
Как эту задачу записать в C#? Переменные экземпляра, класса, константы и переменные readonly: – Ф.И.О., – должность, – базовый...

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные вложеного класа. Добавлено через 22...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru