AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

PHP ОПП Инициализация класса из под класса

Asterisk IP PBX 7 сообщений -
#1

Добрый день!!

Завис на мелочи, требуется взгляд со стороны, понимаю что туплю - не могу понять где.

Пытаюсь написать небольшой скрипт под астериск для маршрутизации звонков на основании записей базы MYSQL, в общем не суть важно.

не могу сообразить другое:
Есть писаный мною скрипт, который обращается к функциям класcа Class1, также есть клас AGI, который предоставляет asterisk.

Код в сокращенном варианте такой:


Код:
Код:
class Class1
{
public function __construct(){
}
public function get_id_from_phone($cid)
{
ля ля ля тополя
}
}

В основном скрипте две строки инициализации классов
Код:

Код:

$cl=new checkgroup();
$agi = new AGI();


И соответственно вызов функций из данных классов
Код:
Код:

$cl->get_id_from_phone($Q,3);
$agi->request['agi_callerid'];



Все хорошо все работает, до момента когда мне понадобилось вызвать функцию из класса AGI внутри класса Class1. Как то я тут завис и не могу понять как внутри одного класса вызвать функции другого класса?

написать внутри класса $agi = new AGI(); выдает ошибку, и т д.
Подскажите кто в теме, умом понимаю что ответ на поверхности но найти не могу.
Заранее благодарю.[/code]
#2

через наследование

class Class1 extends AGI {
...
}
#3

Пробовал, скрипт виснет, к этому я пришел в самом начале.
Возможно непроходимо как-то инициализировать класс AGi в конструкторе ? не подскажите?
#4

Какая версия php?

И вообще есть документация
http://www.php.net/manual/en/language.oop5.php

Код:

class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}

_________________
ys
http://voip.rus.net/
#5

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

По предыдущему посту

Код:
[root@test /]# rpm -qa |grep php
...
php-mysql-5.1.6-27.el5_5.3
php-pdo-5.1.6-27.el5_5.3
php-5.1.6-27.el5_5.3
...


делаю вот так
Код:

#!/usr/bin/php -q
#6

Это что за фигня?
Код:

Agi::verbose($text);
$this->verbose($text);


Вы РАСШИРИЛИ класс Agi, и УНАСЛЕДОВАЛИ ВСЕ его функции.

Т.е. в Вашем классе уже есть verbose() и все, что было в классе Agi.

И не надо его создавать отдельно. ($agi = new AGI())

И Вызов через '::' - это вызов статического класса.

Вообщем - читать ссылку еще раз, до полного просветления Ж)

_________________
ys
http://voip.rus.net/
#7

После фразы

Т.е. в Вашем классе уже есть verbose() и все, что было в классе Agi.

дошло... действительно туплю, как и написал в начале поста.

Благодарю..