2013-12-05 2 views
6

Я хочу установить сторонний PHP-класс для своего приложения. Как мне это сделать в Yii2? Я не мог найти ничего в документации.Yii2 сторонний класс PHP

+0

Для этого требуется дополнительная информация и контекст. –

ответ

6

Самый простой способ сделать это просто зарегистрировать свой класс в любых пространствах имен, определенных Yii2 и использовать его в качестве файла use app\namespace\classname;

2

добавить LIB третьей стороны в composer.json и ударил одну команду

composer update 

всегда идут на основе композиторов.

3

На самом деле это хорошо описано в documentation.

Вы можете узнать, как установить:

  1. использованием композитора;
  2. с использованием Загруженных библиотек;
    • Если библиотека несет свой собственный автозагрузчик класса;
    • Если библиотека не предоставляет автозагрузчик класса, но ее присвоение классам следует за PSR-4;
    • И если ни одно из вышесказанного не является случаем;
3

Как FIMAk сказал, что это хорошо документированы в документации, но все это было не очень понятно, как мне, как использовать загруженную библиотеку с классом автопогрузчика. Так вот что я сделал:

1) создать новую папку в vendor директории и поместить библиотеку там

2) требует автозагрузчика в въездном сценарии, прежде чем Yii входят, в случае базового шаблона приложения это path_to_yii_installation/web/index.php

Например, в одном из проектов, над которым я работал до того, как у меня возникло требование генерировать листы Excel, я обнаружил, что PHPExcel - лучшая библиотека для этого. Так я включил PHPExcel автозагрузчика так:

require(__DIR__ . '/../vendor/excel/PHPExcel.php');

Мой полный index.php файл выглядит следующим образом:

<?php 

// comment out the following two lines when deployed to production 
// defined('YII_DEBUG') or define('YII_DEBUG', true); 
// defined('YII_ENV') or define('YII_ENV', 'dev'); 

require(__DIR__ . '/../vendor/excel/PHPExcel.php'); 
require(__DIR__ . '/../vendor/autoload.php'); 
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); 

$config = require(__DIR__ . '/../config/web.php'); 

(new yii\web\Application($config))->run(); 

3) в верхней части контроллера, модель, или там, где вы хотите использовать библиотеку добавьте use LibraryClassName и все.

+0

Не могли бы вы перейти на шаг 2 с помощью примера. У моего index.php есть «require (__ DIR__ ./ /../../vendor/autoload.php»); так значит ли это, что шаг сделан? – crafter

+0

@crafter лучше сейчас? –

+0

Идеальный Борис. Спасибо. Уже поддержано. – crafter

Смежные вопросы