Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
1

Инициализация

05.08.2010, 08:11. Просмотров 2253. Ответов 16
Метки нет (Все метки)

Вот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Создаем новый класс Coor:
class Coor {
// данные (свойства):
var $name;
var $city;
 
// Инициализирующий метод:
 function Init($name) {
 $this->name = $name;
 $this->city = "London";
 }
 
}
 
// Создаем объект класса Coor:
$object = new Coor;
// Для инициализации объекта сразу вызываем метод:
$object->Init();
Последняя строчка нужна для того, чтобы переменные объекта приняли начальные значения($city="London" к примеру)? А почему в функцию Init() не передаются аргументы? Пустоту-то мне кажется надо передавать, иначе ошибка будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2010, 08:11
Ответы с готовыми решениями:

Инициализация POST Данных
Добрый день сейчас стоит задача инициализировать post данные то есть если...

Инициализация переменных в php
как инициализировать переменные и массивы в php. Напишите примеры пожалуйста.

Автоматическая инициализация переменных PHP
Подскажите какая настройка апача отвечает за автоматическую инициализацию, т.е....

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

Что такое инициализация сегментов или инициализация регистров?
Подскажите, что такое инициализация сегментов или инициализация регистров? Вот...

16
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 08:36 2
Конечно будет. Но пустоту передавать не обязательно, если задать значение по умолчанию:
PHP
1
2
// Инициализирующий метод:
 function Init($name = '') {
1
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 09:27  [ТС] 3
Значит, этот код неправильный, да? А строка
PHP
1
var $name;
не задаёт переменную с пустотой?
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 09:33 4
Ну во первых я бы поостерег пользоваться var. В версиях PHP >= 5 это deprecated, то есть нерекомендовано. В последующих версиях возможно вообще работать не будет. Нужно указывать уровень доступа явно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// Создаем новый класс Coor:
class Coor {
// данные (свойства):
public $name; // это будет перемееная $this->name
public $city;
 
// Инициализирующий метод:
public function Init($name = '') {
 $this->name = $name;
 $this->city = "London";
 }
 
}
А во вторых, переменная $this->name и $name - совершенно разные переменные. И инициализировалась там не она.
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 09:46  [ТС] 5
nubo, $this->name - это свойство объекта, а $name - передаваемая в функцию переменная, как я понял. А public - это значит только для этого класса/объекта? Но мне допустим надо, чтобы вообще передавалось name из класса... Стоп. Когда вызываешь функцию, то разве что-то передаётся из класса? Всё ведь передаётся в аргументах, даже когда функция относится к объекту, так?
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 09:52 6
public - это значит что свойство или метод могут быть доступны извне. Если объявить метод private,
то вот это вызовет ошибку:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Создаем новый класс Coor:
class Coor {
// данные (свойства):
public $name;
public $city;
 
// Инициализирующий метод:
private function Init($name = '') {
 $this->name = $name;
 $this->city = "London";
 }
 
}
 
// Создаем объект класса Coor:
$object = new Coor;
// Для инициализации объекта сразу вызываем метод:
$object->Init();
Дальше ничего не понял.
Но мне допустим надо, чтобы вообще передавалось name из класса...
куда передавалось?
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 10:03  [ТС] 7
nubo, а если будет несколько классов с одной и той же public-функцией (названия одинаковые), то это не вызовет ошибки?
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 10:10 8
Нет. На то они и классы, чтобы локализовать область видимости.
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 10:19  [ТС] 9
А чем отличается public от van и от var (да и вообще что все эти приставки означают?)? А зачем перед функцией public? В том примере с var'ами было просто "function", а не "var function". А инициализация нужна значит для того, чтобы объект принял какие-то настройки по умолчанию, которые сразу же в классе определяются?

Добавлено через 31 секунду
Не мог бы ты, nubo, привести пример и объяснить, зачем это? Заранее благодарен.
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 10:22 10
Это довольно обширная тема - ООП. Попробуй [Ссылка удалена!] порыться.


 Комментарий модератора 
Если хотите помочь пользователям, то переносите статьи на форум, а не оставляйте ссылки на них. Подобные действия расцениваются как реклама сайта.
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 14:57  [ТС] 11
ОК. Посмотрю.

Добавлено через 4 часа 6 минут
Но не думаю, что там будет про то, зачем надо писать public, a не var.

Добавлено через 10 минут
Но всё равно, большое спасибо тебе, nubo! Отличная, НЕСКУЧНАЯ литература!!! Впрочем, там вообще переменные не объявляют, и ни public, ни var там и не пахнет (по крайней мере в 1-й главе).

Добавлено через 3 минуты
Нет, nubo, там тоже var используется. Зачем это вообще? Не проще ли написать $this-> вместо var?
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 15:03 12
Ты читай, читай. Всё там есть.
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 15:04  [ТС] 13
ОК. Почитаю.
0
][акер
#define книжный_червь Я
183 / 94 / 21
Регистрация: 30.01.2010
Сообщений: 780
05.08.2010, 18:53 14
Hagrael, private - область видимости переменной ограничивается только методам класса. Такого обращения как объект->переменная недоступно, выдаст ошибку; protected - то же самое что private только классам-наследникам доступна эта переменная; public - доступно всем! А, кстати, что такое var?
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 19:04  [ТС] 15
][акер, то есть код:
PHP
1
2
3
4
Class CL {
private $a=5;
}
echo CL::a;
высветит пустоту, я прав? Ну тогда мне это и не надо.
0
][акер
#define книжный_червь Я
183 / 94 / 21
Регистрация: 30.01.2010
Сообщений: 780
05.08.2010, 19:09 16
Цитата Сообщение от Hagrael Посмотреть сообщение
высветит пустоту
не пустоту, а ошибку. Просвятил мозги?
0
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
05.08.2010, 19:27  [ТС] 17
Ну да, доступа-то нет. Но мне это пока не нужно...
0
05.08.2010, 19:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2010, 19:27

Инициализация
1. Создать класс Solid 2. Его наследует Planet 3. В функции Gravitation...

Инициализация LCD
Доброе время суток. У меня возникла проблема при работе с LCD дисплеем....

Инициализация указателей
Объявите указатели на следующие объекты: unsigned, char, double, int -...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru