[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Компьютеры » Программирование » PHP » То что может пригодиться (Некоторые полезные вещи на PHP)
То что может пригодиться
АлексейДата: Суббота, 17.03.2018, 21:50 | Сообщение # 1
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Некоторые классы или функции на языке программирования PHP, которую могут вполне пригодиться во время разработки
 
АлексейДата: Суббота, 17.03.2018, 22:13 | Сообщение # 2
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Класс информации о текущем прогрессе (проценте) чего-либо в зависимости от того, где этот класс применяется.
Код
/**
* Класс информации о текущем прогрессе чего либо в зависимости от того, где этот класс применяется.
*/
class Progress {
    /**
     * Текущий процент, храниться чтобы при каждом шаге не нужо было пересчитывать данный параметр
     * @var float
     */
    private $percent = 0;
    /**
     * Триггер используемый для принятия решения о постановке точки
     * @var float
     */
    private $p2 = 0.1;
    /**
     * Шаг триггера
     * @var float
     */
    private $p3 = 0.1;
    /**
     * Индекс текущего шага
     * @var int
     */
    private $index;
    /**
     * Общее количество шагов
     * @var int
     */
    private $count;
    
    /**
     * Инициалзация нового экземпляра класса данных програссе какого-либо прогресса.
     * @param int $count Общее количество шагов
     * @param int $start Начальное количество шагов
     */
    public function Progress (int $count, int $start = 1) {
        $this->count = $count;
        $this->index = $start;
    }
    
    public function setP3($value)
    {
        $this->p3 = $value;
    }

        /**
     * Шаг в перед на некоторое количество позиций. При этом на экран выводиться на
     * печать сооветствующее значение процента, так как этот класс предназначен
     * исключено для вывода информацию в терминал, то выключение печати в терминальном
     * окне не предусмотрено.
     * @param int $num
     */
    public function next(int $num = 1) {
        $percent3 = ($this->index * 100 / $this->count);
        $percent2 = (int)$percent3;
        if ($percent2 > $this->percent) {
            $this->percent = $percent2;
            $this->p2 = $this->p3;
            print "\033[0G\033[2K{$this->percent}%";
        } else if ($percent3 - $this->percent > $this->p2) {
            $this->p2 += $this->p3;
            print '.';
        }
        $this->index = $this->index + $num;
    }
    
    public function finish() {
        $this->percent = 100;
        $this->index = $this->count;
        print "\033[0G\033[2K{$this->percent}%";        
    }
}
 
АлексейДата: Суббота, 17.03.2018, 22:14 | Сообщение # 3
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Данный код удаляет содержимое текущей строки вывода в терминале и устанавливает курсор в позиции первого столбца. 
Код
print "\033[0G\033[2K";
 
АлексейДата: Суббота, 17.03.2018, 22:17 | Сообщение # 4
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Функция для проверки - начинается ли строка с заданной подстроки?
Код
    /**
     * Проверяет начинается ли строка $haystack на $needle
     * @param string $haystack Строка в которой будем искать искомую строку
     * @param string $needle Искомая строка, которая будет искаться в предыдущем параметре.
     * @return boolean true - строка $haystack начинается на строку $needle;
     * false - строка $haystack не начинается на строку $needle
     */
    public static function startsWith(string $haystack, string $needle)
    {
        $length = strlen($needle);
        return $length === 0 || (substr($haystack, 0, $length) === $needle);
    }

Функция для проверки - заканчивается ли строка заданной подстрокой?
Код
    /**
     * Проверяет заканчивается ли строка $haystack на $needle
     * @param string $haystack Строка в которой будем искать искомую строку
     * @param string $needle Искомая строка, которая будет искаться в предыдущем параметре.
     * @return boolean true - строка $haystack заканчивается на строку $needle;
     * false - строка $haystack не заканчивается на строку $needle
     */
    public static function endsWith(string $haystack, string $needle)
    {
        $length = strlen($needle);
        return $length === 0 || (substr($haystack, -$length) === $needle);
    }
 
АлексейДата: Суббота, 17.03.2018, 22:21 | Сообщение # 5
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Функция проверяет содержит ли данная переменная тип boolean. Данная функция у меня убрана в класс, чтобы не перекрывало дефолтную функцию.
Код
    /**
     * Является ли данная строка или что-то там boolean
     * @param type $value Исходное значение
     * @return boolean true - исходное значение является boolean;
     * false - исходное значение не является boolean.
     */
    public static function isBool($value) {
        switch (strtolower($value)) {
            case '1':
            case  'true':
            case 'false':
            case '0':
                return true;
            default:
                return false;
        }
    }

Функция конвертируют исходное значение в тип boolean или переводит полученную строку в этот тип. Если перевод не удается функция возвращает пустоту.
Код
    /**
     * Конвертировать значение в boolean
     * @param type $var Исходное значение
     * @return boolean true - вернулось положительное значение;
     * false - вернулось отрицательное значение.
     */
    public static function toBool($var) {
        if (!is_string($var)) {
            return (bool) $var;
        }
        switch (strtolower($var)) {
            case '1':
            case 'true':        
                return true;
            case 'false':
            case '0':
                return false;
        }
    }
 
АлексейДата: Суббота, 17.03.2018, 22:36 | Сообщение # 6
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Функция проверяет является ли входное значение ссылкой. В случае положительного результата функция так же возвращает ссылку, которая проверялась в стандартном формате. Возврат ссылки с возможными изменениями сделан, чтобы потом не было проблем со сравнением ссылок, так как иногда бывают ситуации, что есть две одинаковые ссылки, которые по разному написаны, например, одна без http вначале или в конце без / , тогда обычная проверка на равенство этих ссылок закончиться неудачей.
Код
/**
* Является ли входное значение ссылкой
* @param string $value
* @return boolean
*/
function is_url(string $value) {
    if (($http = parse_url($value, PHP_URL_SCHEME)) == FALSE || strlen($http) == 0) {
        $value = "http://" . $value;
    }
    if (($value = filter_var($value, FILTER_VALIDATE_URL))) {
        $n = strlen($value);
        if ($value{$n - 1} == "/") {
            $n--;
            $value = substr($value, 0, $n);
        } else {
            $value = $value;
        }
        return urldecode($value);
    } else {
        return FALSE;
    }
}
 
АлексейДата: Понедельник, 19.03.2018, 19:56 | Сообщение # 7
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн

Код
$result = parse_url($url, PHP_URL_HOST) == parse_url($url2, PHP_URL_HOST)

Может дать отрицательный результат, когда значение в $url или $url2 содержаться буквы разного реестра. Например $url = 'http://cod2014.ru'; $url2 = 'http://COD2014.ru' . Решить можно использовав предварительно функцию strtolower($).

Код
$result = parse_url(strtolower($url), PHP_URL_HOST) == parse_url(strtolower($url2), PHP_URL_HOST)
 
АлексейДата: Вторник, 27.03.2018, 17:48 | Сообщение # 8
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
При работе с базой данных MySQL на PHP 5 и выше лучше использовать библиотеку 'mysqli' вместо 'mysql'.
Код
$db = new mysqli('localhost', 'login', 'password', 'database name');
$db->begin_transaction();
$result = $db->query("SELECT ID FROM Site WHERE (host = 'yandex.ru')");
while ($row = mysqli_fetch_array($result)) {
   $id = $row['ID'];
   print $id . " ";
}
print "\n";
$db->commit();
 
Форум » Компьютеры » Программирование » PHP » То что может пригодиться (Некоторые полезные вещи на PHP)
  • Страница 1 из 1
  • 1
Поиск: