[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mvc - не cmv
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
OleKh
не уверен, что так должно быть правильно, хотя без $this->config проще, зачем тогда объявлять свойство $config и делать его приватным?

class Connect{  
private $config;
public static function connection($config){

$this->config = $config;
extract($this->config);

.....

}
Игорь_Vasinsky
смотри ход моей мысли

$this - указатель который присваивается в контструкторе

я же использую статический метод

следовательно я не буду создавать объект класса и использовать его конструктор тем более

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

класс::статический метод(данные)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
Почему в конструкторе. Не обязательно. К примеру вот тут наглядно видно для чего используется $this.

class Connect{
public $param = 'param';

public function connection2($params){
if ($params == 'this') {
$param = $this->param = $params;
} else {
$param = $params;
}
return $param;
}

public function connection3(){
return $this->param;
}
}


$connect = new Connect;
echo $connect->connection2('this');//this
echo $connect->connection3();//this

// или
//echo $connect->connection2('no this');//no this
//echo $connect->connection3();//param
Игорь_Vasinsky
не пойму.

объясни чем плох мой вариант - чем хорош твой

не въезжаю.

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
Не, тут не про плохой, неплохой вариант, просто не понятно было для чего private $config; и почему в методе используется $config без $this.
Игорь_Vasinsky
ну как я понимаю $this - указатель на то что пренадлежит объекту класса.

и в дальнейшем отпадает необходимость в других методах использовать аргументы.

но я то просто вынужден использовать аргумент у своего статичного метода - по этому не вижу необходимости ставить указатель.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
для чего создавать свойство $config и делать его приватным?
Игорь_Vasinsky
для того чтобы скрыть его от других классов.

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

разве это не инкапсюляция? спрятать и защитить от посторонних глаз свойство?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
да, но только в таком случае, иначе свойство получается не связано с аргументом
 $this->config = $config;
extract($this->config);
Игорь_Vasinsky
не понимаю. в чём минус? код работает.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
т.е. я не понимаю - зачем указывать на прbнадлежность к объекту класса - объект класса которого я не создаю и не создам?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
В моем понимании, т.к. я тоже только изучаю php, если свойство объявляется приватным,
это не значит что оно будет не доступно вообще, а оно должно быть доступно в том классе в котором объявлено. Например вот так можно изменить параметры конфигурации в случае необходимости. К стате почему-то $this в статических методах не работает.

class Connect{
private static $config;
private $change_config;

public static function connection($configure){
self::$config = $configure;
return self::$config;
}

public function config ($change){
$this->change_config = $change.' '.self::$config ;
return $this->change_config ;
}
}


echo Connect::connection('configuration').'<br/>';//configuration
$connect = new Connect;
echo $connect->config('change');//change configuration

Игорь_Vasinsky
Цитата
К стате почему-то $this в статических методах не работает.

наверно по тому что для вызова статичного метода - нет необходимости создания объекта класса.

я об этом и говорю.

кстати о доступах

public -публичное свойство доступное классу в котором оно объявлено, и в других классах
private - доступно только классу в котором оно объявлено
protected - доступно классу и дочернему классу.

так что вполне логично - что приватный доступ мне необходим - т.к. не буду больше нигде работать с этим свойством - только в методе того класса в котором я его инициализировал

и соот-но все движения с $this - тоже не имеют смысла - т.к. я использую статический метод

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
OleKh
Цитата (Игорь_Vasinsky @ 7.03.2013 - 21:36)
и соот-но все движения с $this - тоже не имеют смысла

private static $config;
self::$config = $configure;
Игорь_Vasinsky
нам нужен 3й компетентный участник беседы) ьы с тобой одно и тоже повторяем уже 2ю страницу))

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

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