将类实例传递给$app


Slim pass class instance to $app

<?php
  require 'vendor/autoload.php';
  // Include all controllers
  foreach(glob("controllers/*.php") as $controller)
  {
    include $controller;
  }
  // Instantiate a new Slip application
  $app = new 'Slim'Slim(array(
    'debug' => true
  ));
  // HOME CONTROLLER
  $home = new Home;
  $vr = $home->index();
  // Register application routes
  $app->get('/', function () {
      echo $vr;
  });
  // Run application
  $app->run();

这是我的控制器,我想使用控制器,而不是将所有内容都保留在这个文件中。无论如何,我有一个控制器地图,我在其中保存了所有控制器。我在开始时自动将它们全部包含,但是我似乎无法$home变量传递给get()方法,因此我可以调用$vr不执行它或$home->index()

你可以像这样将它传递给你的函数:

..., function () use($home){
  ...

我认为 Slim 也将$app作为函数的第一个参数传递。

编辑:实际上它没有根据其文档,因此您也必须将其传递给use语句中(函数参数是URL参数(:

$app->get('/', function () use($home, $app) {
   $vr = $home->index();
   echo $vr;
   // $app is accesible too...
});