<?php
include "bitrix.php";
include "function.php";
require_once '../src/db.php';
use
должен быть вверху файла.$id = $_GET['id'];
id
.$select = $db->query("SELECT * FROM tg_bot WHERE tg_bot.id='$id'");
$bot_token = $select[0]['api_key'];
define('BOT_TOKEN', "$bot_token");
define
. Эта инструкция придумана для объявления констант. Объявлять константы используя переменные недопустимо.if (php_sapi_name() == 'cli') {
apiRequest('setWebhook', array('url' => isset($argv[1]) && $argv[1] == 'delete' ? '' : WEBHOOK_URL));
exit;
}
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if (!$update) {
exit;
}
// добавляем автозагрузку классов
require_once 'vendor/autoload.php';
// импортируем конфигурацию
require_once 'config.php';
use Chaly/Bot;
// проверяем, что наш скрипт вызван с индентификтором бота
if (!isset($_GET['id'])) {
exit(1); // ненулевой статус говорит об ошибке
}
// загрузить робота из базы данных
$bot = Bot::loadById($_GET['id']);
if (!$bot) {
exit(1);
}
// запустить робота
$bot->run();
public function run() {
if (Cli::isValid()) {
switch (Cli::getCommand()) {
case 'delete':
$this->delete();
break;
case 'register':
$this->register();
break;
}
return;
}
$payload = $this->getWebHookPayload();
if (!$payload) {
return;
}
if (isset($payload['message'])) {
$this->interpretMessage($payload['message']);
}
// и так далее, думаю смысл понятен
}
#!/bin/bash
COLUMN=1 # csv column to extract
RENAME=false # if we should rename the file, note that is was really specific for my problem.
THREADS=16 # threads to use by parallel
#Set Script Name variable
SCRIPT=`basename ${BASH_SOURCE[0]}`
#Set fonts for Help.
NORM=`tput sgr0`
BOLD=`tput bold`
REV=`tput smso`
# Help function
function HELP {
echo -e \\n"Help documentation for ${SCRIPT}."\\n
echo -e "Basic usage: ./$SCRIPT"\\n
echo "Command line switches are optional. The following switches are recognized."
echo "-f csv file = required should be last argument"
echo "-c column, default $COLUMN"
echo "-t threads, default $THREADS"
echo "-r renamd, should be renamed - work in progress here because this is really specific renaming"
echo -e "-h --Displays this help message. No further functions are performed."\\n
echo -e "Example: ./${BOLD}$SCRIPT -rc 2 -f file.csv"\\n
exit 1
}
#Check the number of arguments. If none are passed, print help and exit.
NUMARGS=$#
if [ $NUMARGS -eq 0 ]; then
HELP
exit 1
fi
while getopts ::c::r:h:f FLAG; do
case $FLAG in
t)
THREADS=$OPTARG
;;
c)
COLUMN=$OPTARG
;;
r)
RENAME=true
;;
h) #show help
HELP
;;
\?)
echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
HELP
;;
esac
done
shift $((OPTIND-1))
FILE=$1
# shift ops, all optional args are now removed $1 will have to be the filename
if [ "$RENAME" = true ]; then
mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
(cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {}; mv {/} `echo "{/}" | tr "." "_" | cut -d "_" -f1,3 | tr "_" "."`')
else
mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
(cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {};')
fi
Статические ссылки на текущий класс, такие как self:: или __CLASS__, вычисляются используя класс, к которому эта функция принадлежит, как и в том месте, где она была определенаПозднее статическое связывание
...
Позднее статическое связывание пытается устранить это ограничение, предоставляя ключевое слово, которое ссылается на класс, вызванный непосредственно в ходе выполнения.
public static function getMessage(): string
{
return 'message - ' . static::getString();
}
$client = factory(Client::class)->create();
$mock = Mockery::mock(Client::class);
$this->app->instance($class, $mock);
$mock->shouldReceive('createFromApi')
->withAnyArgs()
->andReturn($client);
class A
{
public static $text = 'class A';
public function selfTest()
{
echo self::$text;
}
public function staticTest()
{
echo static::$text;
}
}
class B extends A
{
public static $text = 'class B';
}
$obj = new B();
$obj->selfTest(); // выведет "class A"
$obj->staticTest(); // выведет "class B"
class Sms
{
protected static $instances = [];
public static function getInstance($id = 'default')
{
$map = [
'first' => 'FirstSmsHandler',
'second' => 'SecondSmsHandler',
'default' => 'FirstSmsHandler',
];
if (!isset(self::$instances[$id])) {
if (!isset($map[$id])) {
throw new \Exception(sprintf('Unknown hadler `%s`', $id));
}
$handler = new $map[$id];
self::$instances[$id] = new self($handler);
}
return self::$instances[$id];
}
protected $handler;
public function __construct(SmsHandler $handler)
{
$this->setHandler($handler)
}
public function setHandler(SmsHandler $handler)
{
return $this->handler = $handler;
}
public function changeHandlerByName($handlerName)
{
$map = [
'first' => 'FirstSmsHandler',
'second' => 'SecondSmsHandler',
'default' => 'FirstSmsHandler',
];
if (!isset($map[$handlerName])) {
throw new \Exception(sprintf('Unknown handler `%s`', $handlerName));
}
$handler = new $map[$handlerName];
$this->setHandler($handler);
return $this;
}
public function __call($name, $arguments)
{
return call_user_func_array([$this->handler, $name], $arguments);
}
}
$sms = new Sms(new FirstSmsHandler());
$sms->changeHandlerByName($_POST['provider']);
$sms = Sms::getInstance($_POST['provider']);
$sms->getBalance();