Использование фукнций одного класса в другом

Avdoshyn

Новичок
Использование фукнций одного класса в другом

Добрый день!

Может кто-то подскажет как использовать фукнции одного класса внутри другого.

Заранее спасибо
 

kvn

programmer
Ну если использовать как static functions то,
$result = ClassName::Function($params);

А если как членов обьекта, то :
$this->otherClass = new ClassName();
$this->result = $this->otherClass->Function($params);

Хотя можно и без $this обойтись...
 

avdoshyn

Guest
Спасибо, но еще проблемка

Спасибо сработало!

Но появилась попутная проблема:

есть класс common
есть класс db
есть класс vypusk

vypusk является расширением common но при этом использует функции из db.

когда я вызываю в классе vypusk функцию db::query(), она использует функцию error() внутри своего же класса, но получается что она как бы не видна из vypusk и пишется ошибка

Fatal error: Call to undefined function: error() in e:\www\site\obzor_new\classes\db.php on line 19

Как с этим быть?

И еще как быть с переопределением классов?

потому что класс common используется как в vypusk так и в db и получается переопределение, как здесь посоветуете поступить?

Автор оригинала: tony2001
CLASS::function();
 

Сытник

Guest
Re: Спасибо, но еще проблемка

Автор оригинала: avdoshyn
Спасибо сработало!

Но появилась попутная проблема:

есть класс common
есть класс db
есть класс vypusk

vypusk является расширением common но при этом использует функции из db.

когда я вызываю в классе vypusk функцию db::query(), она использует функцию error() внутри своего же класса, но получается что она как бы не видна из vypusk и пишется ошибка

Fatal error: Call to undefined function: error() in e:\www\site\obzor_new\classes\db.php on line 19

Как с этим быть?

И еще как быть с переопределением классов?

потому что класс common используется как в vypusk так и в db и получается переопределение, как здесь посоветуете поступить?
parent::query() ИМХО...
 

tony2001

TeaM PHPClub
avdoshyn:
имхо проще сделать экземпляр класса DB свойством объектов Vypusk.
тогда все подобные вопросы сами по себе отпадают.
 

avdoshyn

Guest
Что-то не получается

да я пробовал, но у меня не получается.

Вот так правильно:

require("classes/db.php");

class vypusk {
var $db;

function vypusk() {
$db = new db;
}

function test() {
$db->query("show tables");
}
}

выдает ошибку.

Что здесь неверно:?


Автор оригинала: tony2001
avdoshyn:
имхо проще сделать экземпляр класса DB свойством объектов Vypusk.
тогда все подобные вопросы сами по себе отпадают.
 

tony2001

TeaM PHPClub
>выдает ошибку.
ессно!
PHP:
function vypusk() {
  $this->db = new db;
}
function test() {
  $this->db->query("show tables");
}
 

avdoshyn

Guest
Все понял, спасибо

Все понял. Спасибо.

Кстати попутно вопрос может кто сталкивался с проблемой бинарного аплоада. Видимо это как-то связано с настройкой кодировки на Apache но что точно я не знаю, может кто подскажет.

Спасибо за форум - очень помогает иногда.


Автор оригинала: tony2001
>выдает ошибку.
ессно!
PHP:
function vypusk() {
  $this->db = new db;
}
function test() {
  $this->db->query("show tables");
}
 

tony2001

TeaM PHPClub
русский апач ?
там чего-то типа CharsetMultipartForms off надо выставить, не помню точное написание. он пытается перекодировать все входящие файлы.
 

avdoshyn

Guest
Thanks

Спасибо!

Да кстати - мы земляки, я тоже из Харькова!

Автор оригинала: tony2001
русский апач ?
там чего-то типа CharsetMultipartForms off надо выставить, не помню точное написание. он пытается перекодировать все входящие файлы.
 

Avdoshyn

Новичок
А как использовать свойства одного класса в другом?

А как использовать свойства одного класса в другом?

например

class common {

var $main_tab,$http_path,$material,$quest;

function common() {
$this->main_tab = "obzor";
$this->http_path = "/site/obzor_new/";
$material = $this->http_path."materials/";
$guest = $this->http_path."materials/guest/";
}

-----------

class vypusk extends common {

function vypusk() {
$this->db = new db;
}


function test() {
echo $this->main_tab;
}



Не печатает ничего!

Как же обратить к свойству родительского класса?

Спасибо


Автор оригинала: kvn
Ну если использовать как static functions то,
$result = ClassName::Function($params);

А если как членов обьекта, то :
$this->otherClass = new ClassName();
$this->result = $this->otherClass->Function($params);

Хотя можно и без $this обойтись...
 

tony2001

TeaM PHPClub
>Да кстати - мы земляки, я тоже из Харькова!
я заметил =)
кстати, я приватное сообщение послал.

>Не печатает ничего!
>Как же обратить к свойству родительского класса?
конечно не печатает.
это свойство не класса, а экземпляра класса и в "ребенке" оно просто пустое - если я не ошибаюсь, конструктор родителя вызывается только тогда, когда у "ребенка" нет конструктора.
 

Avdoshyn

Новичок
А какое же решение?

Я понял, только решение проблемы какое?

А приватные сообщения где читать.

Может лучше в ICQ: 84915672

Автор оригинала: tony2001
>Да кстати - мы земляки, я тоже из Харькова!
я заметил =)
кстати, я приватное сообщение послал.

>Не печатает ничего!
>Как же обратить к свойству родительского класса?
конечно не печатает.
это свойство не класса, а экземпляра класса и в "ребенке" оно просто пустое - если я не ошибаюсь, конструктор родителя вызывается только тогда, когда у "ребенка" нет конструктора.
 
Сверху