Тонкая структура программы

Я хотел добавить функцию в свое приложение 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 для нажатия кнопки отправки в форме входа.


person Chris G.    schedule 06.10.2011    source источник
comment
Трудно сказать, так как не видно, где вы на самом деле звоните authenticate. Из того, что он показывает, почему он должен быть неправильным? Что может быть лучше работы?   -  person hakre    schedule 06.10.2011
comment
Я добавил, где это вызывается. Я спрашиваю, потому что обычно не вижу, чтобы «глобальный» или «основной» объект передавался таким образом.   -  person Chris G.    schedule 06.10.2011


Ответы (1)


Я предлагаю вам использовать метод реестра.. 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');
person Vyriel    schedule 06.10.2011