Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить новую функцию в класс 
:(
    Опции темы
anthonyBoard
Дата 8.11.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Здравствуйте!

Возникла необходимость добавить функцию в уже объявленный класс, но в документации подобного не нашел, как это можно реализовать?

есть класс

class Some{

  ...

}
$some = new Some;

и надо добавить в него функцию

function doSome(){
   print 'DONE';
}

чтобы она стала доступна по $some->doSome();


Заранее благодарен за помощь!
PM MAIL   Вверх
awers
Дата 8.11.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



не хотел особо мучаться, вот что получилось
Код

<?php
$c = new stdClass();
$c->newfunc = create_function(null,"return 'jkhk';");
$z= $c->newfunc;
echo $z();
?>

может и проще можно

Это сообщение отредактировал(а) awers - 8.11.2008, 19:39
PM MAIL WWW ICQ Skype   Вверх
anthonyBoard
Дата 8.11.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Хм.. Что-то не хотит.
Пишет Call to undefined method Some::doSome()
PM MAIL   Вверх
awers
Дата 8.11.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



пхп5?

Код

<?php
$твойКласс = new твойКласс();
$твойКласс->новаяФункция = create_function(null,"return 'Я текст функции';");
$ТолькоТак= $твойКласс->новаяФункция;
echo $ТолькоТак();
?>


а ты скорее всего обратился как $твойКласс->новаяФункция();
так и не сработает
PM MAIL WWW ICQ Skype   Вверх
anthonyBoard
Дата 8.11.2008, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Надо же так

Код

class Some{

...

}

$some = new Some;
$some->doSome= create_function(null,"return 'DONE';");
echo $some->doSome();


Хотя сейчас пришла другая идея на ум, попробую. Напишу если прокатит.

Добавлено через 30 секунд
Да-да, именно так и пытаюсь!
PM MAIL   Вверх
anthonyBoard
Дата 8.11.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Не получается что-то вживить функцию в класс. Если кто-нибудь знает другие варианты, помогите пожалуйста!
PM MAIL   Вверх
skyboy
Дата 9.11.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



classkit_method_add попробуй 
PM MAIL   Вверх
anthonyBoard
Дата 9.11.2008, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Спасибо, это то что надо!
Но! Какова вероятность, что эта функция будет на хосте? У меня, например, Call to undefined function classkit_method_add() вылетает, к сожалению.
Хотя по документации эта функция что надо, правда экспереминтальная.
PM MAIL   Вверх
awers
Дата 9.11.2008, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



skyboy, упс. не видал такого )
PM MAIL WWW ICQ Skype   Вверх
anthonyBoard
Дата 9.11.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Что-то никто так и не ответил на счет вероятности присутствия PECL на сервере .

А вообще в дивжке стоит ли использовать те методы, которые могут отсутствовать на сервере? Потому что мне кажется это не очень хорошо.

Это сообщение отредактировал(а) anthonyBoard - 9.11.2008, 12:02
PM MAIL   Вверх
skyboy
Дата 9.11.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(anthonyBoard @  9.11.2008,  10:53 Найти цитируемый пост)
А вообще в дивжке стоит ли использовать те методы, которые могут отсутствовать на сервере?

угу. есть вероятность нарваться на РНР4  + MySQL3. 
может, выбирать хостинг под систему, а не систему под хостинг?
PM MAIL   Вверх
anthonyBoard
Дата 9.11.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Просто эту систему потом буду использовать не только я, и хочется чтобы она работала хотя бы на php >= 5 со стандартным набором модулей.

Вот если взять во внимание существующие самые распространенные CMS'ины: Joomla, Bitrix и другие на этом же уровне, у них есть ограничения подобные, что на сервере должно быть то и то иначе не заработает?
PM MAIL   Вверх
anthonyBoard
Дата 9.11.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Что-то тема повисла, решений больше никаких не появляется.

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

Т.е. что-нибудь вроде такого:

Код

class A{
   function doFromA(){
     print 'A - DONE';
   }
}


class B{
   function __construct(){
      $this = A :: instance; // что-нибудь такое
   }
   final function doFromB{
     print 'B - DONE';
   }
}

$b = new B();

$b->doFromA();


Это сообщение отредактировал(а) anthonyBoard - 9.11.2008, 20:04
PM MAIL   Вверх
anthonyBoard
Дата 9.11.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.8.2008
Где: Russia, Obninsk

Репутация: нет
Всего: нет



Возможно ли чтобы класс унаслеловал методы другого во время __construct?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.