10/10/2018, 10:08

PHP - Làm sao để send biến qua included file

Chào các bạn,

Giả sử mình có 1 file php như thế này

* File A.php:

$abc = '123';

function printHello($name)
{
echo 'Hello ' . $name;
}

assign ($abc)

include ('B.php');


Và 1 file như vầy

* File B.php
echo $abc
// Hoặc bằng 1 cách nào đó lấy được giá trị của $abc
printHello($name)
// Hoặc chạy được hàm tương ứng với hàm trên
Shellingfox viết 12:23 ngày 10/10/2018
Được gửi bởi Newbie05
Chào các bạn,

Giả sử mình có 1 file php như thế này

* File A.php:

$abc = '123';

function printHello($name)
{
echo 'Hello ' . $name;
}

assign ($abc)

include ('B.php');


Và 1 file như vầy

* File B.php
echo $abc
// Hoặc bằng 1 cách nào đó lấy được giá trị của $abc
printHello($name)
// Hoặc chạy được hàm tương ứng với hàm trên
Theo như yêu cầu của bạn thì đâu có cần làm gì :|. Làm như bạn thì từ trong file B.php có thể truy cập vào biến $abc hoặc hàm printHello như bạn đã định nghĩa mà.
ducuytran viết 12:21 ngày 10/10/2018
Cách 1: include cả 2 file
Cách 2: include file chứa biến, lấy giá trị lưu vào session
Cách 3: include file chứa biến, lấy giá trị và truyền qua method GET
...
Newbie05 viết 12:18 ngày 10/10/2018
Hic, bạn Shellingfox chưa thử qua việc này đúng không. Nếu khai báo biến trong file B.php thi trong A.php hoàn toàn có thể sử dụng được. Còn trường hợp này ngược lại bạn à. Còn việc thực hiện theo cách của bạn ducuytran thì 3 cách trên không ổn rồi, tuy nhiên bạn có thể giải thích rõ cách 1 hơn không
kenphan19 viết 12:09 ngày 10/10/2018
cái global variable dùng để làm gì trời !
Newbie05 viết 12:09 ngày 10/10/2018
Ờ, cái này để mình làm thử xem sao. Nhưng nếu nhiều global quá có vấn đề gì về bộ nhớ hay vấn đề gì khác không? Còn cái function thì sao?
Shellingfox viết 12:16 ngày 10/10/2018
Được gửi bởi Newbie05
Hic, bạn Shellingfox chưa thử qua việc này đúng không. Nếu khai báo biến trong file B.php thi trong A.php hoàn toàn có thể sử dụng được. Còn trường hợp này ngược lại bạn à. Còn việc thực hiện theo cách của bạn ducuytran thì 3 cách trên không ổn rồi, tuy nhiên bạn có thể giải thích rõ cách 1 hơn không
Thử nói rõ hơn ý của bạn coi sao? Mình thử chẳng có vấn đề gì hết trơn.
Source của bạn đâu có gọi lại mấy biến từ trong hàm nào đâu nên xài global không giải quyết được vấn đề vì các biến của bạn khai báo đã nằm chung 1 scope rồi.


Mình test thử rồi, bạn khai báo biến trong A.php thì trong B.php vẫn sử dụng được mà, kể cả ngược lại định nghĩa trong B thì A vẫn gọi được :|.
Đây là code mình test:
A.php
PHP Code:
<?php
// Định nghĩa biến $abc
$abc '123';

// Định nghĩa hàm printHello
function printHello($name) {
  echo 
'Hello ' $name;
}
// include file B.php
include('B.php');

// Gọi biến từ file B.php
echo $cde;
B.php
PHP Code:
<?php
// Lấy biến $abc từ file A.php
echo $abc;
// Gọi hàm printHello từ file A.php
printHello('Shellingfox');

// Định nghĩa biến trong file B
$cde '456';
Kết quả:
Code:
123Hello Shellingfox456
Đâu có gặp vấn đề gì :|
vannhothanh viết 12:21 ngày 10/10/2018
ban nen kham khao tai day php nuke 8.1
Newbie05 viết 12:09 ngày 10/10/2018
Thôi để mình nói thiệt ý đồ ra luôn. Như thế này:

File View.php:

<?php
class View
{
static public function display($templateFile)
{
include(_L_THEME_DIR_.$templateFile);
}

static public function assignVar($name, $value)
{
??????
}

static public function assignFunction($name, $paramType, $returnType)
{
??????
}
}
?>

File index.php:

<?php
include ('View.php');

function doTesting($value, 'in')
{
return $value;
}

View::assignVar('test', 10);
View::assignFunction('doTesting', 'string', 'string');
View::display('index.html');
?>

File index.html:

<?php
echo $test;
echo $doTesting('ABCDEF');
?>

Mình đang thiết kế 1 template engine "cây nhà lá vườn". Giúp mình với nha.
Shellingfox viết 12:18 ngày 10/10/2018
Được gửi bởi Newbie05
Thôi để mình nói thiệt ý đồ ra luôn. Như thế này:

File View.php:

<?php
class View
{
static public function display($templateFile)
{
include(_L_THEME_DIR_.$templateFile);
}

static public function assignVar($name, $value)
{
??????
}

static public function assignFunction($name, $paramType, $returnType)
{
??????
}
}
?>

File index.php:

<?php
include ('View.php');

function doTesting($value, 'in')
{
return $value;
}

View::assignVar('test', 10);
View::assignFunction('doTesting', 'string', 'string');
View::display('index.html');
?>

File index.html:

<?php
echo $test;
echo $doTesting('ABCDEF');
?>

Mình đang thiết kế 1 template engine "cây nhà lá vườn". Giúp mình với nha.

À hóa ra bạn muốn xử dụng cái kiểu này. Cái này thì không phải là trong include rồi.

Bạn thử hàm eval thử, có cần example thì nói mình.
Bài liên quan
0