第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP:類函數(shù)在一個(gè)文件中起作用,但在另一個(gè)文件中不起作用

PHP:類函數(shù)在一個(gè)文件中起作用,但在另一個(gè)文件中不起作用

PHP
Qyouu 2023-10-21 17:20:52
我正在使用 PHP 制作一個(gè) Telegram 機(jī)器人。我有 bot.php、filter.php 和 test.php。我希望我的機(jī)器人向用戶發(fā)送一條包含 ID 的消息。我有一個(gè) Filter 類,并且我的 filter.php 中有一個(gè)帶有正則表達(dá)式模式的函數(shù)來檢測(cè)此 id,并且我正在使用 preg_match 來獲取匹配項(xiàng)。public function getID($string) {    $pattern = "/e0(\d){6}\b/i";    preg_match($pattern, $string, $matches);    return $matches[0];}在我的 test.php 中,我使用該函數(shù),它能夠向我回顯匹配項(xiàng)。<?phpinclude __DIR__ . './filter.php';$check = new Filter();    $pattern = "/e0(\d){6}\b/i";$text = "hi e0000000";echo "id: ".$check->getID($text);?>在我的 bot.php 中,我嘗試使用相同的函數(shù)發(fā)送消息,但它不起作用。(sendMsg 函數(shù)只是對(duì) Telegram Bot API 的簡(jiǎn)單curl http 請(qǐng)求)include __DIR__ . './filter.php';$filter = new Filter();function handleGoodMessage($chatId, $text) {  $report = "Message '".$text."' passed the filters.\nID: ".$filter->getID($text);  sendMsg($chatId, $report);}相反,每當(dāng)調(diào)用該函數(shù)時(shí),機(jī)器人都會(huì)返回 500 內(nèi)部服務(wù)器錯(cuò)誤。請(qǐng)幫忙。
查看完整描述

1 回答

?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

$filter無法在函數(shù)內(nèi)部訪問。


$filter = new Filter(); //<--- filter is here, in the outer scope

function handleGoodMessage($chatId, $text) {

  $report = "Message '".$text."' passed the filters.\nID: ".$filter->getID($text); 

  

  //this scope is inside the function, $filter does not exist here

  sendMsg($chatId, $report);

}

這在測(cè)試中有效,因?yàn)槟桓姆秶?。你需?filter傳入


- - - 更新 - -


就我個(gè)人而言,我總是依賴注入而不是使用,globals所以我的偏好是重新定義函數(shù),如下所示:


function handleGoodMessage($chatId, $text, $filter) {

      $report = "Message '".$text."' passed the filters.\nID: ".$filter->getID($text); 

      sendMsg($chatId, $report);

    }

我可能(冒著讓某些人不安的風(fēng)險(xiǎn))將其getID定義為 a static function,因?yàn)樗]有真正交互任何東西,沒有使用任何成員變量,只是處理一個(gè)字符串并返回它。那么global你可以說,而不是注入它,或者使用它


function handleGoodMessage($chatId, $text) {

      $report = "Message '".$text."' passed the filters.\nID: ".Filter::getID($text); 

      sendMsg($chatId, $report);

    }


查看完整回答
反對(duì) 回復(fù) 2023-10-21
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)