10/10/2018, 10:08

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

vi dung the này
PHP Code:
/* 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 viết 12:15 ngày 10/10/2018
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 viết 12:20 ngày 10/10/2018
ý 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
hoangcn02 viết 12:16 ngày 10/10/2018
Được gửi bởi ghetlamminh
ý 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
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
ngoc_viet08 viết 12:13 ngày 10/10/2018
ủ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 viết 12:08 ngày 10/10/2018
Được gửi bởi ngoc_viet08
ủ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

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

Được gửi bởi hoangcn02
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
đúng đúng huynh biết cách đó không?
hoangcn02 viết 12:20 ngày 10/10/2018
Được gửi bởi ghetlamminh
đú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
jiSh@n viết 12:13 ngày 10/10/2018
tìm hiểu về design pattern trong OOP nhé: singleton, abstract factory.
ghetlamminh viết 12:21 ngày 10/10/2018
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
Bài liên quan
0