LoginSignup
5

More than 5 years have passed since last update.

Slim 3 Framework でログ出力したりQueryパラメータひろったり。その3

Posted at

その2で

Slim-Skeleton を導入してから肉付けが楽しい今日このごろ。回り道が多かったけどなんとなく理解できてきたんで。そろそろ本格的にプログラムしてみようかなとw。

ログ出力に monolog が使える

Slim-Skeleton を導入すると monolog が使えるので楽ちん。src/settings.php に設定されているので簡単に使える。

src/settings.php
  'logger' => [
    'name' => 'slim-app',
    'path' => __DIR__ . '/../logs/app.log',
    'level' => \Monolog\Logger::DEBUG,
  ],

使い方は下記みたいに使えばok。詳しくはソースみてもいいかも。vendor/monolog/monolog/src/Monolog/Logger.php

$this->logger->addDebug('log');
$this->logger->addInfo('log');
$this->logger->addWarning('log');

Queryパラメータを取得

slimには、method として GET, PUT やら普通にhttpのmethodがあるわけですが、ちょっと面白いのが map つーやつ。こいつ複数のmethodを一つでうけることができる優れもので、まあしないだろうけど GET/POST両方おなじuriで受けるときに便利に使えそう。

$app->map(['GET', 'POST'], '/books', function (Request $request, $response, $args) {

とりあえずこんな感じで使ってみる。

$app->map(['GET', 'POST'], '/test_param', function ($request, $response, $args) {
  $method = $request->getMethod();
  $uri = $request->getUri();

  // get/post
  if ($request->isGet() == 1) {
    echo "<br> isGet!! <br>";
    $allGetVars = $request->getQueryParams();
    foreach($allGetVars as $key => $param){
      //GET parameters list
      echo $param . "<br>";
    }
    //Single GET parameter
    $getParam = $allGetVars['name'];
    echo "<br> get name : " . $getParam . "<br>";
  } else {
    echo "<br> isPost!! <br>";
    $allPostPutVars = $request->getParsedBody();
    foreach($allPostPutVars as $key => $param){
      //POST or PUT parameters list
      echo $param . "<br>";
    }
    //Single POST/PUT parameter
    $getParam = $allPostPutVars['name'];
    echo "<br> post name : " . $getParam . "<br>";
  }
}

getMethod() getUri() は、Slim Request を参照するとよい。

で、簡単なフォームを作って試してみる。

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>sample</title>
 </head>
<body>
 <form action="http://ホストip:8080/test_param" method="post">
  名前:<br />
  <input type="text" name="name" size="30" value="" /><br />
  メールアドレス:<br />
  <input type="text" name="mail" size="30" value="" /><br />
  コメント:<br />
  <textarea name="comment" cols="30" rows="5"></textarea><br />
  <br />
  <input type="submit" value="登録する" />
 </form>
</body>
</html>

get/post両方に対応できるやん。簡単すなw

これで簡単なアプリつくれそーだw
次は、パラメータ受け取って色々なQueryを書いてみる。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5