簡體   English   中英

PHP跳過函數調用輸出

[英]PHP skips function call output

我有以下問題

require('drawchart.php');

if ( file_exists('drawchart.php')){ cwrapper();}

使用來自cwrapper的'chart.png'命令;

cwrapper是drawchart.php內部的函數,可訪問MySQL並繪制圖表。 該函數本身和在test.php中都可以正常工作,但是它停止在我的主程序中生成圖表,而我對為什么它在那里不起作用感到困惑。

我嘗試引入sleep(30)來查看是否需要等待文件寫入才能成功。 但這也無濟於事。 緊隨其后的第二條命令永遠不會拾取輸出文件chart.png。 在這兩種情況下,目錄都是絕對路徑,所以這不是問題。

它確實在此處拾取了一個現有的chart.png,但是沒有從if調用中生成應更新的圖表。 似乎正在跳過對cwrapper的調用。

封裝程序正在使用pchart繪制圖表,並且它在testscript中完美地完成了它。

我該如何解決這個問題? 有沒有更好的方法來實現這一目標?

首先,確保cwrapper()函數調用。

由於不提供drawchart.php的路徑,如果當前目錄中不存在它,則require()php.ini include_path指定的路徑中搜索它(可以在運行時更改)。

file_exist()並不是那么幸運,它只有在當前目錄中存在時才能找到該文件。

處理這種情況的最好方法是不檢查文件是否存在(誰在乎它?讓let require()處理它),而是檢查要調用的函數是否存在:

require 'drawchart.php';

if (function_exists('cwrapper')) {
    cwrapper();
}

實際上,由於require會在無法加載文件時終止腳本,因此您甚至無需檢查該函數是否存在。 如果它在必需文件中定義,則它在require()語句返回之后存在(否則腳本將中止)。

您的代碼應該很簡單:

require 'drawchart.php';

cwrapper();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM