[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП`ный вопрос !
Splaer
Суть такова:

Класс - это по сути "шаблон" для создания объектов и работа происходит с объектом сего класса.
Но я часто вижу обращения непосредственно к самим классам, а не с объектом этих классов,
объекты вообще не создают.
Т.е. :
 Class SomeClass
{
public function SomeFunc(){...}
...
}
SomeClass::SomeFunc();


Как такое может быть?
Поясните пожалуйста ибо я запутался!
bestxp
прочитай про позднее и раннее связывание wink.gif
Splaer
Цитата (bestxp @ 25.12.2013 - 22:38)
прочитай про позднее и раннее связывание ;)

Вся печаль в том, что связывания там нет!

Вот например:
class Core {
static $DOMAIN = 'http://name.ru/';
static $DB_LOCAL = 'localhost';
static $DB_NAME = 'main';
static $DB_LOGIN = 'root';
static $DB_PASS = '';
}

$db_connect['user'] = Core::$DB_LOGIN;


Никаких наследований, ничего, но прямое обращение к классу.

Я так понимаю, что в таком случае создавать объекты классов можно при необходимости нескольких одинаковых объектов, а если он один, то можно и напрямую, или в чем прикол ?
xlebosol
Что можно сказать, начать читать и разбираться, а не одна бабка надвое сказала. Прочти о статических методах и свойствах. Синтаксис в ООП.
bestxp
Цитата (Splaer @ 26.12.2013 - 01:00)
Цитата (bestxp @ 25.12.2013 - 22:38)
прочитай про позднее и раннее связывание ;)

Вся печаль в том, что связывания там нет!

Вот например:
class Core {
static $DOMAIN = 'http://name.ru/';
static $DB_LOCAL = 'localhost';
static $DB_NAME = 'main';
static $DB_LOGIN = 'root';
static $DB_PASS = '';
}

$db_connect['user'] = Core::$DB_LOGIN;


Никаких наследований, ничего, но прямое обращение к классу.

Я так понимаю, что в таком случае создавать объекты классов можно при необходимости нескольких одинаковых объектов, а если он один, то можно и напрямую, или в чем прикол ?

как раз таки есть, позднее статическое связывание в php

затрагивает статические методы и переменные
плюс рассматривает использование self:: static:: внутри

и твой пример не верный, для того что ты показал подходят больше константы чем переменные, либо всё это закрыть за интерфейсом, глупый пример
GET
Цитата
глупый пример


В контексте именно аодключения к БД наверное глупый, а так почему бы и нет, если $DB_LOGIN где-то меняется через __set() например. Легко же может быть.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
Более уместные примеры это синглтон или ассерты

пример

Class MyClass{
private static $instance;
public static function instance(){
if(!self::$instance){
self::$instance = new self;
}
return self::$instance;
}
}


ну или пример с ассертами как вариант
Splaer
Цитата
глупый пример


Этот пример не я писал, он выдран из чужого кода.

Цитата
Более уместные примеры это синглтон или ассерты


Внутри класса - это понятно.

Ты не понял что я имею ввиду.

Вот читаю я книгу, где написано: "определяя класс, вы на самом деле создаете шаблон для создания объектов. В нем дается перечень всех переменных, которые будет иметь данный объект...."

В книге нет ни одной записи, аналогичной тому, что я написал.
Везде пишется только в такой форме:

class Core {
static $DOMAIN = 'http://name.ru/';
static $DB_LOCAL = 'localhost';
static $DB_NAME = 'main';
static $DB_LOGIN = 'root';
static $DB_PASS = '';
}

$a = new Core;

и далее работа с этим объектом.
glock18
bestxp
вы притворяетесь или действительно видите в примере late static binding или даже намек на него?
glock18
Цитата (xlebosol @ 25.12.2013 - 21:10)
Прочти о статических методах и свойствах


Splaer, вот вам руководство к действию
Быстрый ответ:

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