Есть 3 файла. index.php
include "func.php";
$vk = new vk_api(VK_KEY, VERSION);
$vk->sendOK();
...
$testq = ttt($peer_id, $message);
func.php
include "api/vk_api.php";
function ttt($peer_id, $text)
{
$t = $vk->sendMessage($peer_id, $text);
}
vk_api.php
class vk_api
{
public function sendMessage($sendID, $message){
if (!empty($sendID)) {
return $this->request($this->token, 'messages.send', array('message'=>$message, 'peer_id'=>$sendID, 'random_id'=>rand(1, 2147483600)));
} else {
return true;
}
}
}
Но request в sendMessage почему то не вызывается, больше того, останавливается дальнейшее выполнение кода.
Если же вызывать напрямую из файла index.php
$vk = new vk_api(VK_KEY, VERSION);
$vk->sendOK();
...
$vk->sendMessage('123', 'test');
То все работает. В чем может быть проблема? Как правильно вызывать методы класса из функции другого файла?
Все переменные в php по умолчанию являются локальными, и не могут быть использованы в пользовательских функциях. Чтобы избавится от этого нужно сделать эту переменную глобальной:
func.php
include "api/vk_api.php";
function ttt($peer_id, $text)
{
global $vk;
$t = $vk->sendMessage($peer_id, $text);
}
Так же, вы можете передавать эту переменную в функцию. Тогда код будет выглядеть как-то так:
index.php
include "func.php";
$vk = new vk_api(VK_KEY, VERSION);
$vk->sendOK();
...
$testq = ttt($peer_id, $message, $vk);
func.php
include "api/vk_api.php";
function ttt($peer_id, $text, $vk)
{
$t = $vk->sendMessage($peer_id, $text);
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости