Импорт внешних файлов php в Yii - PullRequest
0 голосов
/ 25 июля 2011

У меня есть некоторые файлы, использующие raw php (включая файлы конфигурации), которые используются для автоматической рассылки на моем сервере.

Предположим, внутри этого файла я определил пару констант (define (...)) и массив, заполненный информацией о подключении к базе данных, такой как пользователь, хост и т. д.).

Веб-сайт создан с использованием Yii, поэтому он также использует файл конфигурации.

Эти необработанные файлы могутбыть размещенным где угодно (внутри защищенного, снаружи, на том же уровне index.php, что угодно).

Теперь возникает проблема, что у меня есть другой файл конфигурации (и разные пользователи / пароль для баз данных, иитак) за пределами Yii, но мне нужно использовать его и в некоторых местах внутри Yii.

Есть ли способ импортировать эти файлы в контроллер? Я сделал это, поместивони внутри расширений, но сырые функции оттуда не работали.

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

Простым подходом будет размещение файлов в расширениях и добавление пути расширений в вашу конфигурацию yii. Затем сделайте контроллер и вызовите методы из его действий. Давайте рассмотрим пример swiftmailer. Вот пользовательский контроллер, который вы можете использовать.

class mailerController extends Controller{

public function actions()
{
    return array(
         //can add other actions here
    );
}
    public function actionIndex(){

        echo "use mailer?e=<email>&m=<message>&sub=<subject> to send mail from the site to the email address";

    }


    public static function actionSendMail($e,$m,$sub){  

        $content = $m ; // can use a template and then assign to content 
        $SM = new SwiftMailer(); //the external method, should be present in include path
        // Get config
        $mailHost = Yii::app()->params['mailhost'];
        $mailPort = 25; // Optional
        $Transport = $SM->smtpTransport($mailHost, $mailPort);
        $Mailer = $SM->mailer($Transport);
        $Message = $SM
            ->newMessage($sub)
            ->setFrom(Yii::app()->params['sitemail'])
            ->setTo($e)
            ->addPart($content, 'text/html');
        return ( $Mailer->send($Message));
    } }

как только ваш контроллер готов, его можно назвать как

yoursite.com/mailer?e=<email>&m=<message>&sub=<subject>
0 голосов
/ 25 июля 2011

Лучшим подходом было бы посмотреть, можете ли вы поместить свой пользовательский код в файлы классов, поместить их в каталог компонентов или аналогичный и преобразовать свои файлы в классы (если их еще нет).Таким образом, вы можете получить свои данные без большого количества смешивания кода, который будет трудно поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...