【问题标题】:Passing object to method laravel php bundles将对象传递给方法 laravel php 包
【发布时间】:2013-05-24 08:59:56
【问题描述】:

可能是一个菜鸟问题,但我们开始吧。

我正在使用 laravel 和消息包发送电子邮件以验证用户。但是如何从我的 send 方法中访问我的 $new_user 对象?

    // Get inputdata and insert into table users
    $new_user = User::create(array(
        'username' => Input::get('username'), 
        'email' => Input::get('email'), 
        'password' => Hash::make(Input::get('password')),
        'hash' => hash('sha512', uniqid()) 
    ));

    Message::send(function($message)
    {
        $message->to('blablabla@hotmail.com');
        $message->from($new_user->email, $new_user->username);

        $message->subject('new account');
        $message->body('

            Bedankt voor het registreren!

            Uw account is aangemaakt, u kan inloggen met de volgende gegevens nadat u u account heeft geactiveerd met de url hier beneden.

            ------------------------
            Username: '.$new_user->username.'
            Password: '.$new_user->password.'
            ------------------------

            Klik op deze link om uw account te activeren.

            http://blablabla.dev/verify?email='.$new_user->email.'&hash='.$new_user->hash.' 

        ');
    });

这样做显然不起作用,因为我无权访问该对象。

希望我说得对。

【问题讨论】:

    标签: php object parameter-passing laravel laravel-3


    【解决方案1】:

    您可以在此处使用use 关键字

    $new_user = User::create(array(
        'username' => Input::get('username'), 
        'email' => Input::get('email'), 
        'password' => Hash::make(Input::get('password')),
        'hash' => hash('sha512', uniqid()) 
    ));
    
    Message::send(function($message) use ($new_user)
    {
        $message->to('blablabla@hotmail.com');
        $message->from($new_user->email, $new_user->username);
        // ...
    }
    

    【讨论】:

      【解决方案2】:

      $message instanceof 消息?以及应该将哪些参数传递给 Message::send()? 也许你最好这样做:

      $message = new Message;
      $message->to('blablabla@hotmail.com');
      $message->from($new_user->email, $new_user->username);
      $message->subject('new account');
      $message->body('...'.$new_user->email.'...');
      

      如果你的 Message 类中有公共(非静态)方法 send(),它看起来像这样:

      public function send(){
           @mail($this->to, $this->subject, $this->body, $this->header, $this->params);
      }
      

      那就做吧

      $message->send();
      

      否则,如果您的 Message 类中只有静态 send() 方法,并且它定义为

      static function send(Message $message){...}
      

      打电话

      Message::send($message);
      

      我还建议您在将用户输入添加到数据库之前对其进行验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 2023-03-09
        • 2011-09-27
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多