环境
当你的朋友给你看代码时:
$env = $app->detectEnvironment(array(
'local' => array('homestead'),
));
它指的是允许您将主机名 (homestead) 绑定到特定环境名称 (local) 的框架部分。
您可以在bootstrap/start.php 的项目中找到包含此代码的文件。或者看看here on GitHub。
当您为特定主机名指定环境名称时,框架将加载不同的配置设置。如果您查看文件夹:
app/config/
您会注意到有一个名为local 的文件夹。该文件夹包含一些与app/config/ 文件夹根目录中的配置文件相匹配的配置文件。当您在具有您在 start.php 文件中指定的主机名的计算机上启动框架时,它会使用您在应用常规配置版本之前在文件的 local/ 版本中提供的任何设置。
这意味着如果您在本地环境中使用不同的数据库凭据,您可以将它们放在 config/local/database.php 配置中,并且它们只会在您本地环境中启动框架时使用。
你的local目录下的配置项是级联的,所以你只需要添加与生产环境不同的配置即可。
您可以通过添加新的环境名称和应该运行它的计算机的主机名来设置不同的环境:
$env = $app->detectEnvironment(array(
'local' => array('homestead'),
'testing' => array('testserver')
));
现在我可以创建一个名为 app/config/testing 的文件夹,添加一个新的 database.php 配置文件并指定我的测试数据库的凭据。当从测试服务器启动框架时,将使用来自testing 配置文件的任何详细信息,然后剩余的配置详细信息将来自默认(生产)环境配置文件。
此外,Laravel 4.2 假定 app/config 作为您的生产环境,因此当您在生产服务器上启动该框架时,它将使用位于 app/config 的配置文件中的所有凭据
您可以在how Laravel handles configurations here 上阅读更多内容。
虚拟机(宅基地)
您朋友所说的虚拟机homestead,是 Laravel 的官方虚拟开发环境。它基本上是一个专门为使用 laravel 进行调整的虚拟机(尽管你也可以将它用于非 Laravel 项目)。 Laracasts 有一个fee video talking about homestead 可以帮助您填写。