X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Перегрузка PHP
romantik2011
romantik2011
Topic Starter сообщение 24.7.2011, 17:49; Ответить: romantik2011
Сообщение #1


[PHP]
class A{
public $t = 5;
public function s($x1){
echo "Вызов 1";
}

public function s($x1,$x2){
echo "Вызов 2";
}

}
[/PHP]

Почему не работает перегрузка?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 24.7.2011, 17:56; Ответить: alexdrob
Сообщение #2


потому что в php нет перегрузки :)
можете попытаться эмулировать с помощью __call
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 24.7.2011, 18:04; Ответить: alexdrob
Сообщение #3


[PHP]class A{
public $t = 5;

public function __call($method, $param) {
$ind = count($param);
$method = '_' . $method;
if (is_callable(array($this, $method))) {
$this->$method($param);
}
}

public function _s($param){
echo "Вызов " . count($param);
}
}

$a = new A;

$a->s();
$a->s(1);
$a->s(1,2);[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 25.7.2011, 1:32; Ответить: Apay
Сообщение #4


можно и так:
[PHP]class A {
function s(){
switch( func_num_args() ){
case 1:
echo 'вызов с одним аргументом '.func_get_arg(0);
break;
case 2:
echo 'вызов с двумя аргументами '.func_get_arg(0).' и '.func_get_arg(1);
break;
}
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 25.7.2011, 19:42; Ответить: romantik2011
Сообщение #5


А в этом коде, это переопределение в классах-потомках получается?
[PHP]
<?php
class A{
public $t = 5;
protected $a = "<br>Алла<br>";
private $b = "Петя";

public function s($x1){
echo "Вызов родителя",$x1;
echo $this->a,$this->b;
}

}

class B extends A{
public function s($x1){
parent::s(NULL);
}
}

class C extends B{
public function s($x1){
echo $this->a;
}
}

$obj = new B;
$obj->s(NULL);

$obj = new C;
$obj->s(NULL);
?>
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 26.7.2011, 10:54; Ответить: Mulder_hb
Сообщение #6


Переопределение и перегрузка разные вещи.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3396 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1239 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44897 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1888 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3401 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 18.4.2024, 18:16
Дизайн