1

Slimアプリケーションに関数を追加したかったのですが、PHPに精通していないため、このような構造を作成するための最良の方法を知ることができません。これは本番環境に対応したコードではなく、ユーザー名とパスワードをスクリプトにハードコーディングすることはありません。これは単に概念を説明するために作成しました。

$options = array(
    'username' => 'admin',
    'password' => 'password'
);

$app = new Slim(array(
    'view' => new TwigView()
));

$app->config($ptions);

function authenticate($app, $username, $password) {
    if($username==$app->config('username') && $password==$app->config('password')){
        return true;
    } else {
        return false;
    }
}

$app->get('/', function () use ($app) { // ... }
// ... other routes
$app->post('/login', function() use ($app) {
    $username = $app->request()->post('username');
    $password = $app->request()->post('password');
    if(authenticate($app, $username,$password)) {
        $app->redirect('/');
    }
    $app->redirect('/login');
});

$app->run();

$app渡さなければならないのは理にかなっていますauthenticate()か、それとももっと良い方法がありますか?authenticate()ミドルウェアではありませんが、ログインフォームで送信を押すためにPOSTルートで呼び出される関数です。

4

1 に答える 1

0

レジストリメソッドを使用することをお勧めします..ohbtw$app->config($ptions);$app->config($options);

「レジストリ」に関しては、次のクラスを使用します。

<?
class Registry {
  private static $data;

  /**
  * Returns saved variable named $key
  * @param string $key
  * @return mixed
  */
    public static function get($key) {
      if(!empty(self::$data[$key])) {
        return self::$data[$key];
      }
      return null;
    }

  /**
  * Saves variable to registry with the name $key
  * @param string $key
  * @param mixed $value
  * @return boolean
  */
  public static function set($key, $value) {
    if(!empty($value)) {
      self::$data[$key] = $value;
        return true;
      }
      return false;
  }
}
?>

使用を節約する

Registry::set('key', $value);

使用を取得する

Registry::get('key');
于 2011-10-06T15:28:08.417 に答える