Laravel 5获得命令响应

时间:2015-05-07 14:45:42

标签: php laravel laravel-5

我认为我理解Laravel中的命令概念,因为它是放置可重用代码的好地方,可以从控制器等调用,但我有一个查询:

我可以从命令返回一个值回调用方法吗?例如,我有一个控制器方法,它在Active Directory中创建一个用户,为此有一个命令来执行此操作。如果AD服务器无法访问,我想将响应返回给调用控制器方法。这可能吗?

It only shows in the documentation如何使用dispatch()调用命令,但没有关于它是否可以返回任何内容的信息。

如果您无法返回值,有人可以解释为什么您不想返回值的原因吗?我知道排队的命令可能需要一段时间而不适合等待响应,但是对于应该立即执行的命令,我不明白为什么你不想返回一个值。

感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:7)

在命令总线的上下文中,是的,您可以返回非排队命令的值。在命令处理程序方法中,只需返回您想要的内容:

jsonInput = "{ 
              'PERSON' : {
                         'FNAME': 'John'; 
                         'LNAME': 'Doe', 
                         'CITY': 'Vancuver'
                        } 
             }";
Public class Person{
     public Person(string json,string city,string country){
            JObject jObject = JObject.Parse(json);
            JToken jPerson = jObject["PERSON"];
            FNAME= (string) jPerson ["FNAME"];
            LNAME= (string) jPerson ["LNAME"];

            COUNTRY = country:
            CITY= ((string) jPerson ["CITY"] == string.Empty)?city:(string) jPerson ["CITY"]; //IF CITY PROPERTY EMPTY USE CITY ELSE USE JSON PROPERTY

         }  
           public string FNAME{ get; set; }
           public string LNAME{ get; set; }
           public string CITY{ get; set; }
           public string COUNTRY{ get; set; }         
}

并将调度命令的结果保存到变量:

public function handle(){
    return 'foobar';
}

答案 1 :(得分:2)

命令不用于在控制器中存储可重用代码。它们被重命名为5.1中的工作,其主要目的是作为Cron Jobs工作。如果您有创建用户的方法并希望在许多地方使用它,则可以将其存储在用户模型中。