[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: В чем отличия указателя self от this?
romantik2011
В чем отличия указателя self от this? Что-то не совсем ясно.



Спустя 4 минуты, 30 секунд (27.07.2011 - 19:32) Winston написал(а):
А как обратишься к например статической переменой например?
Только вот так
Свернутый текст
<?php 
class
Singleton {
static private $instance = NULL;

private function __construct() {
}


static public function getInstance() {
if (self::$instance == NULL) {
self::$instance = new Singleton();
}
return self::$instance;
}
}

?>

Или как ты к динамическому полю обратишься например ?

Свернутый текст
class myClass{ 
private $var = NULL;

private function __construct() {
}


public function getInstance() {
if ($this -> instance == NULL) {
// if (self :: $instance == NULL) { //Это уже ошибка
$this -> instance = new myClass();
}
return $this -> instance;
}
}

Спустя 6 минут, 31 секунда (27.07.2011 - 19:38) romantik2011 написал(а):
Цитата
А как обратишься к например статической переменой например?


А какой выигрыш от создание статической переменной и какой смысл её создавать? Чем хуже создать динамический метод?

Кстати вот так тоже работает ваш пример, даже без SELF, зачем тогда он?

<?php
class
Singleton {
static private $instance = NULL;

private function __construct() {
}


static public function getInstance() {
if ($instance == NULL) {
$instance = new Singleton();
}
return $instance;
}
}

?>

Спустя 20 минут, 15 секунд (27.07.2011 - 19:59) alex12060 написал(а):
romantik2011

Это называется симантикой языка, типа имхо.

Спустя 1 минута, 9 секунд (27.07.2011 - 20:00) Winston написал(а):
Цитата (romantik2011 @ 27.07.2011 - 19:38)
Кстати вот так тоже работает ваш пример

В таком случае переменная будет локальной и вне метода getInstance вы ее нигде не сможете получить smile.gif



Спустя 36 секунд PHPprogrammer написал(а):
Цитата (alex12060 @ 27.07.2011 - 19:59)
симантикой

Семантикой smile.gif

Спустя 1 минута, 45 секунд (27.07.2011 - 20:01) romantik2011 написал(а):
И всё-таки, зачем SELF вписывать в код, какой толк?

Спустя 5 минут, 9 секунд (27.07.2011 - 20:07) alexbel2404 написал(а):
через self обращаешься к статическим методам и свойствам класса.

Спустя 5 минут, 3 секунды (27.07.2011 - 20:12) romantik2011 написал(а):
Так можно обращаться к статическим методам и свойствам класса без ключевого слова SELF и всё равно интерпретатор не выдаёт ошибок.

Спустя 1 минута, 38 секунд (27.07.2011 - 20:13) Winston написал(а):
Цитата (romantik2011 @ 27.07.2011 - 20:12)
Так можно обращаться к статическим методам и свойствам класса без ключевого слова SELF и всё равно интерпретатор не выдаёт ошибок

Советую почитать про локальные и глобальные переменные для начала...

Спустя 2 минуты, 6 секунд (27.07.2011 - 20:15) romantik2011 написал(а):
ну понятно что локальная переменная - это та которая действует внутри класса, а глобальная - та которая и за классом тоже пашет и внутри.

Спустя 2 минуты, 37 секунд (27.07.2011 - 20:18) alex12060 написал(а):
romantik2011


class test {

static public $test = 'test';

static public function tests() {
echo 'Static';

$new = 'I is new!';
}
}



А теперь, выведи ка мне метод tests()
свойство $test и переменную $new

Спустя 4 минуты, 40 секунд (27.07.2011 - 20:23) Winston написал(а):
Посмотри код
Свернутый текст
class myclass { 
static private $var = 'статик';

public function local() {
if ($var == NULL)
return 'Локальная ';
}
public function glob() {
if (self :: $var != NULL)
return self :: $var . ' глобальная ';
}
}


$o = new myclass;
echo $o -> local();
echo '<br/>';
echo $o -> glob();

Может поймешь чего ?

Спустя 1 час, 12 минут, 31 секунда (27.07.2011 - 21:35) romantik2011 написал(а):
PHPprogrammer
ваш код выдал вот такое.


Notice: Undefined property: myclass::$var in C:\www\htdocs\test.ru\www\index.php on line 6
Локальная
статик глобальная


Спустя 7 минут, 28 секунд (27.07.2011 - 21:43) Invis1ble написал(а):
romantik2011
интерпретатор работает со статическими методами и свойствами быстрее
Цитата
Так можно обращаться к статическим методам и свойствам класса без ключевого слова SELF и всё равно интерпретатор не выдаёт ошибок.

а ты попробуй запусти свой код из своего 2-го поста с уровнем E_ALL wink.gif

Спустя 7 секунд (27.07.2011 - 21:43) Winston написал(а):
Цитата (romantik2011 @ 27.07.2011 - 21:35)
Notice: Undefined property: myclass

......
Цитата (romantik2011 @ 27.07.2011 - 21:35)
Локальная
статик глобальная

А вот эти 2 последние строки и показывают, что без self не добраться к $var = 'статик';
Быстрый ответ:

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