[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему __CLASS__ возвращает имя родителя?
redreem
<?php

abstract class
Base_Class {

public function __construct() {

echo __CLASS__;

}

}


class Child_Class extends Base_Class{

}


$c = new Child_Class();

?>


выводит:

Base_Class


объясните плиз почему так и как мне получить имя дочернего класса в рамках подобной реализации?
Winston
abstract class Base_Class {

public function __construct() {

echo get_class($this);

}

}
redreem
Winston

спасибо. хотя все равно не понятно почему с __CLASS__ не срабатывало smile.gif
forza
может быть в конструкторе echo get_class($this); ?

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
Winston
Цитата (redreem @ 13.09.2012 - 11:48)
хотя все равно не понятно почему с __CLASS__ не срабатывало

Из-за того, что __class__ возвращает имя класса членами которого ты сейчас пользуешься.
Если я не прав поправьте меня...


Если бы ты написал
class Child_Class extends Base_Class{
public function foo()
{
echo __CLASS__;
}
}


$c = new Child_Class();
$c->foo();

Тебе бы выдало Child_Class
Placido
Как вариант, вместо __CLASS__ и get_class() можно использовать ReflectionClass
$ref = new ReflectionClass($this);
echo $ref->getName();
redreem
всем еще раз спасибо, остановился на варианте get_class($this);, пока все устраивает.
SlavaFr
php5.3

class A{
public function __construct() {
echo get_called_class();
}
}


class B extends A{}

new B;


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
redreem
SlavaFr

слишком жирно, только с 5.3
SlavaFr
Цитата (redreem @ 13.09.2012 - 13:07)
SlavaFr

слишком жирно, только с 5.3

да пора уже менять!


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
redreem
SlavaFr

кому? хостерам?
Быстрый ответ:

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