代码点火器自定义助手

时间:2014-10-10 22:22:39

标签: php codeigniter oop

我是Code igniter / OOP的新手,但试图解决这个问题。

我正在尝试制作一个可以在我的代码中使用的助手;这就是它的样子:

if ( ! function_exists('email'))
{
    function email($type, $to, $subject, $object)
    {
        switch($type){

            case 'new':

                $body = "Hello ". $object['FirstName'] . ' ' . $object['LastName'] . ","
                    . "<p/><p/>Thank you.";
                break;
        }

        // Send it
        $this->load->library('email');
        $this->email->to($to);
        $this->email->from('blah@website.com', 'James');
        $this->email->subject($subject);
        $this->email->message($body);
        $this->email->send();

    }
}

然后我将它包含在帮助部分的自动加载中。

当我尝试在我的控制器中访问它时,我收到错误。

$obect['FirstName']='Carl';
$obect['LastName']='Blah';
email('new', 'test@website.com', 'test', $object);

以下是我收到的错误:

Fatal error: Using $this when not in object context in C:\inetpub\wwwroot\attrition\application\helpers\email_helper.php on line 17 

3 个答案:

答案 0 :(得分:1)

您将使用该变量而不是$ this

所以,你的$这是由此改变的

$CI =& get_instance();

如何使用?通常你使用$ this喜欢

$this->load->other();
// change to
$CI->load->other();

应该是工作

答案 1 :(得分:0)

将您的功能更改为此代码:

if ( ! function_exists('email'))
{
    function email($type, $to, $subject, $object)
     {
         switch($type){

             case 'new':

                 $body = "Hello ". $object['FirstName'] . ' ' . $object['LastName'] . ","
                     . "<p/><p/>Thank you.";
                 break;
         }

         // Send it
         $this = &get_instance(); // here you need to get instance of codeigniter for use it
         $this->load->library('email');
         $this->email->to($to);
         $this->email->from('blah@website.com', 'James');
         $this->email->subject($subject);
         $this->email->message($body);
         $this->email->send();

     }
 }

答案 2 :(得分:0)

  

不在对象上下文中时使用 $ this

这只是意味着你不能在对象(类)之外使用 $ this 关键字, 正如@Kryten指出的那样。

助手通常仅用于嵌入html,例如格式化数据。

<p><?php echo formatHelper(escape($var)); ?></p>

您需要做的是阅读一些关于创建Library

的内容