可以接受回傳資料? 先調查一下,知道 include 或 require 可以取得回傳資料的請舉手… (眺望) 呃…不知道的朋友也不用煩惱,我來解釋一下。 如何回傳資料呢?假設現在有個 php 檔叫做 config.php ,內容如下: 1 2 <?php return array('123', '456'); 咦?那邊有人說 return 放錯地方了?不不不, PHP 能接受這樣的寫法。 好,現在我們來證明 include 或 require 能取得 config.php 所 return 回來的資料。請建立一支 test.php ,其內容是: 1 2 $config = require 'config.php'; var_dump($config); 執行看看,是不是可以跑呀? 所以我們可以在某支 PHP 程式中 return 一個資料 (任何型態) ,然後在另一支 PHP 程式中用 include 或 require 來取得這個資料。 把 require 放在參數裡 什麼?這不是密技?不不不,密技在底下: 1 2 3 4 function test($config) { var_dump($config); } test(require 'config.php'); 對!你沒看錯!直接把 require 放在函式的參數裡! 還沒完呢,再看: 1 2 3 4 5 6 7 8 class Test { public function __construct($config) { var_dump($config); } } $a = new Test(require 'config.php'); 連 new 建構子的參數都可以接受 require ! 所以只要能放變數的地方,都可以放 include 或 require ,例如: 1 2 3 4 5 6 if (require 'config.php') { var_dump(require 'config.php'); } if ($config = require 'config.php') { var_dump($config); } 而且不僅是 include 及 require ,連 include_once 和 require_once 都可以這麼做。 我在某篇文章發現這個密技以後,分享給辦公室裡的同事們;沒想到玩了 PHP 這麼多年的他們也沒看過這個方法,看來大家對 PHP 的瞭解需要更深入一點囉! Scope 的問題 接著我同事問了我一個問題:如果在參數使用 require 敘述,而且被 require 的 PHP 程式裡如果有定義全域變數的話,那麼這個變數在執行的 PHP 程式裡,它的 scope 在哪裡呢? 答案是:它還是全域。 怎麼說呢?現在我們在剛剛的 config.php 的 return 敘述前加上一行程式,如下: 1 2 3 <?php $data = '789'; // 加上這行 return array('123', '456'); 然後在 test.php 裡的 Global 部份 (也就是不在函式或類別定義裡) 的任意處加入: 1 var_dump($data); 是不是也可以正確顯示 config.php 中 $data 變數所指定的內容呢?這就表示在參數中使用 require 不會影響全域變數的 scope 。 還有其他 include 或 require 的密技嗎?歡迎大家一起討論囉~
发表评论
- 访问:33400次
- 积分:268分
- 排名:第36名
- 随笔:26篇
- 评论:10条
公告
来这里了解真实的自己。
随笔分类
随笔归档
个人相册
阅读排行榜
- PHP简单的table表格绘制扩展 (2935)
- PHP商品列表页及内容页的简单例子 (1905)
- 中奖姓名例子 (1527)
- for循环简单例子99乘法表 (1504)
- switch等匹配用法 (1419)
- 用字符串数据类型拆分等留言板小例子 (1383)
- 实体输出小例子 (1382)
- 数组记录时间 (1357)
- 简单的数组网站配置例子 (1350)
- 取得文件大小的例子 (1331)
评论排行榜
- 活着是战场 (3)
- 数据类型数组等 (2)
- 数组记录时间 (1)
- 用字符串数据类型拆分等留言板小例子 (1)
- 对象类CLASS (1)
- $_GET传递简单例子 (1)
- 稳稳的幸福 (1)
- PHP商品列表页及内容页的简单例子 (0)
- 中奖姓名例子 (0)
- 简单的数组网站配置例子 (0)
最新评论
- $_GET传递简单例子
Alexander:Ho ho, who woudla thunk it, right?
- 数据类型数组等
Nasiya:Good point. I hadn't thgouht about it quite th...
- 对象类CLASS
Prum:Of the panoply of website I've pored over this...
- 活着是战场
Erik:Keep on writing and chignugg away!
- 稳稳的幸福
Karrdy:AKAIK yov'ue got the answer in one!
- 活着是战场
phpchina:别给自己太大压力哦
- 活着是战场
iphone:多找朋友聚聚,可以释放压力,思路也会慢慢清晰!加油!
- 数据类型数组等
好饱:过来顶一下!