Про использование библиотеки Noty.js я писал здесь . На самом деле мне она очень понравилась своей простотой и практичностью.

В связи с этим, я решил немного кастомизировать её под свои нужды. Я собираюсь использовать её в php проектах и никакого лишнего кода JavaScript мне там не нужно.

Подключение к проекту Noty.js я здесь не буду описывать, по ссылке выше всё уже расписано.

Мы не будем использовать всё API библиотеки. Возьмём только основные настройки, тем самым обеспечим базовую работоспособность уведомлений. Если нужны более глубокие настройки, никто не мешает дописать нужный функционал 😉

<?
/**
 * https://ned.im/noty/#/
 * https://github.com/needim/noty
 * https://daneden.github.io/animate.css/
 * A Dependency-free notification library
 * Class Noty
 */
class Noty
{
  /**
   * @param $type
   * @param $text
   * @param $timeout
   * @param $layout
   */
  public static function run($type, $text, $timeout, $layout)
  {
    echo '
    <script>
    new Noty({
      type: '."\"$type\"".',
      text: '."\"$text\"".',
      timeout: '."\"$timeout\"".',
      layout: '."\"$layout\"".',            
      theme: "semanticui", 
      animation: {
        open: "animated bounceInRight", 
        close: "animated bounceOutRight"
      }
    }).show();
    </script>';
  }
}
  • $type - тип уведомления
  • $text - текст сообщения может быть html кодом или строкой
  • $timeout - задержка перед закрытием уведомления. Установите false для липких уведомлений
  • $layout - позиция уведомления
// Простой пример: принимаем get-параметр 'name'
// http://site.com/?name=John
$name = $_GET['name'] ?? null;

if(!$name):
  /**
   * Если значение аргумента не передавать,
   * то сработает значение по умолчанию
   * https://ned.im/noty/#/options
   */
   Noty::run('','Name does not exist', false, 'bottomRight');
else:
   Noty::run('success', 'Hello, '.$name, 3000, 'topRight');
endif;

// Или где-то в контроллере
public function actionSignUp()
{
  /* @var $user User */
  try {
    $user->signup();
    Noty::run('success','User registration was successful!', 3000, 'topRight');
  } catch (Exception $e) {
    Noty::run('error',$e->getMessage(), 3000, 'topRight');
  }
}

Получился простой, но в тоже время практичный класс для уведомлений, которые теперь можно спокойно вызывать из любого места приложения на PHP .