Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Yii中导入外部php文件_Php_Yii - Fatal编程技术网

在Yii中导入外部php文件

在Yii中导入外部php文件,php,yii,Php,Yii,我有一些使用原始php(包括配置文件)的文件,用于服务器中的自动邮件 假设在这个文件中我定义了两个常量(define(…)和一个填充了数据库连接信息的数组,比如用户、主机等等) 该网站是使用Yii完成的,因此它还使用了一个配置文件 这些原始文件可以放在任何地方(受保护的内部、外部、与index.php处于同一级别,等等) 现在问题来了,我在Yii之外有一个不同的配置文件(以及数据库的不同用户/密码等等),但我也需要在Yii内部的某些地方使用它 是否有明确的方法将这些文件导入控制器?我已经将它们放

我有一些使用原始php(包括配置文件)的文件,用于服务器中的自动邮件

假设在这个文件中我定义了两个常量(define(…)和一个填充了数据库连接信息的数组,比如用户、主机等等)

该网站是使用Yii完成的,因此它还使用了一个配置文件

这些原始文件可以放在任何地方(受保护的内部、外部、与index.php处于同一级别,等等)

现在问题来了,我在Yii之外有一个不同的配置文件(以及数据库的不同用户/密码等等),但我也需要在Yii内部的某些地方使用它


是否有明确的方法将这些文件导入控制器?我已经将它们放在扩展中,但原始函数无法从中运行。

最好的方法是查看是否可以将自定义代码放入类文件中,并将其放入components目录或类似目录中,然后将文件转换为类(如果还没有)这样你就可以在没有大量代码混合的情况下得到你的数据,这将是很难维持的。

< P>简单的方法是将文件放在扩展中,并将扩展路径添加到你的YII配置中。然后制作一个控制器并从其动作中调用方法。让我们考虑一个SWIFTMALLER的例子。这里是一个自定义C。你可以使用的遥控器

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));
    } }
类mailerController扩展控制器{
公共职能行动()
{
返回数组(
//您可以在此处添加其他操作
);
}
公共职能行动索引(){
echo“使用mailer?e=&m=&sub=将邮件从站点发送到电子邮件地址”;
}
公共静态函数actionSendMail($e,$m,$sub){
$content=$m;//可以使用模板,然后分配给内容
$SM=new SwiftMailer();//外部方法应存在于包含路径中
//获取配置
$mailHost=Yii::app()->params['mailHost'];
$mailPort=25;//可选
$Transport=$SM->smtpTransport($mailHost,$mailPort);
$Mailer=$SM->Mailer($Transport);
$Message=$SM
->新消息($sub)
->setFrom(Yii::app()->params['sitemail'])
->setTo($e)
->addPart($content,'text/html');
返回($Mailer->send($Message));
} }
一旦你的控制器准备好了,就可以像这样调用它

yoursite.com/mailer?e=<email>&m=<message>&sub=<subject>
yoursite.com/mailer?e=&m=&sub=

信息太少,无法继续。请给出最简单的具体示例来说明您的问题。好吧,没什么好说的,但我在第二段中添加了它