PDA

View Full Version : PHP:làm sao trong class B có thể gọi được class A trong trường hợp này



ghetlamminh
27-02-2010, 08:17
vi dung the này

/* file A.php */
class A
{
function hello($name)
{
return 'Hello,'.$name;
}
}
/* file B.php */
class B
{
function write_getting()
{
return $A->hello('Tony Teo');
}
}
/*file C.php*/
include('A.php');
include('B.php');
echo $B->write_getting();

viết file C.php thế nào để gọi được $B->write_getting(); chạy cho đúng, nói thẳng ra là em thấy mấy cái framework có thể sử dụng class Database ở đâu củng được, nó gọi như thế này $return = &$db->query('lệnh T-SQL');,giờ ý em muốn class db riêng của mình củng như thế, có thể gọi ở đâu củng được trong các class khác.hi cảm ơn mọi người

thuyduongcd
27-02-2010, 09:50
chạy cho đúng là chạy như thế nào?
file B.php sử dụng hàm hello (của file A.php) thì cái dòng include ('A.php') phải nằm trong file B.php

ghetlamminh
27-02-2010, 13:45
ý mình là ví dụ trong App có nhiều class sử dụng class db nếu như vậy thì phải include class db nhiều lần, mình chỉ muốn include 1 lần thôi thì tất cả các class trong App đều sử dụng được class db đó, ko chơi global nha :D

hoangcn02
28-02-2010, 11:36
ý mình là ví dụ trong App có nhiều class sử dụng class db nếu như vậy thì phải include class db nhiều lần, mình chỉ muốn include 1 lần thôi thì tất cả các class trong App đều sử dụng được class db đó, ko chơi global nha :D
Bạn tham khảo thử cái cách Joomla nó làm đi, coi phải ý bạn muốn làm như vậy không :D

ngoc_viet08
28-02-2010, 13:04
ủa ủa có 1 file thì include vào 1 lần là xài bao nhiêu lần chả được . dùng include_one .
còn các class khác xài nó thì chỉ việc lưu vào biến . ví dụ class A $this->db = $database_class;
bữa sau xài :
$this->db->query();....

ghetlamminh
28-02-2010, 15:24
ủa ủa có 1 file thì include vào 1 lần là xài bao nhiêu lần chả được . dùng include_one .
còn các class khác xài nó thì chỉ việc lưu vào biến . ví dụ class A $this->db = $database_class;
bữa sau xài :
$this->db->query();....
sao được nếu trong class B ko new A(),trong class làm sao để gọi biến ở ngoài class đó được, mình muốn là không cần new cứ
gọi thẳng, cách gọi của nó giống như Joomla vậy ví dụ $user =& JFactory::getUser(); gọi ở đâu củng được, nhiều framework khác cũng gọi như thế Codeigniter chẳng hạn, cứ gọi $this->db->query('..'); là nó hiểu hết.Cái này cơ bản mà mình cũng chưa hiểu lắm.
Giờ mình cũng làm class database như thế, nhưng không biết class khạc gọi làm sao :D

[=========> Bổ sung bài viết <=========]


Bạn tham khảo thử cái cách Joomla nó làm đi, coi phải ý bạn muốn làm như vậy không :D
đúng đúng huynh biết cách đó không?

hoangcn02
28-02-2010, 23:00
đúng đúng huynh biết cách đó không?
Vậy thì cứ dòm theo cách của thằng Joomla nó làm ntn mà học theo thôi chứ gì nữa :)
mình muốn là không cần new --> dùng ::
Demo thử phát :
file a.php :
class A
{
function abc()
{
return 'Function abc of class A';
}
}

file b.php
class B
{
function xyz()
{
echo A::abc();
}
}

Trong file demo.php
require_once 'a.php';
require_once 'b.php';
B::xyz();

Hy vọng cái demo này chạy được :D

jiSh@n
28-02-2010, 23:02
tìm hiểu về design pattern trong OOP nhé: singleton, abstract factory.

ghetlamminh
01-03-2010, 07:41
hic do không hiểu cơ bản cứ tưởng A::Func = A->Func nên bỏ qua không tìm hiểu cái '::' thanks các bác