ここでよくお勧めするチュートリアルBuild a PHP MVC Applicationを実行し、短縮されたifステートメントのコード行に、?
と:
を使用して実行しました。私はこの種の短いコードにはあまり慣れていないので、私はそれをどのように書くのか再作成しようとしました。コードの行をifステートメントに置き換える
$this->params = $url ? array_values($url) : [];
私が思い付いた:
if(isset($url))
{
$this->params = array_values($url);
}
このまったく同じことをしているのですか?または私は何かを逃していますか?それは動作し、同じことをしているように見えますが、確かに知りたいです。
答えのいくつかは$のURLの状態に依存しているので、ここでは完全なコードです:
<?php
class App
{
protected $controller = 'home';
protected $method = 'index';
protected $params = [];
public function __construct()
{
$url = $this->parseUrl();
if(file_exists('../app/controllers/' . $url[0] . '.php'))
{
$this->controller = $url[0];
unset($url[0]);
}
require_once '../app/controllers/' . $this->controller . '.php';
$this->controller = new $this->controller;
if(isset($url[1]))
{
if(method_exists($this->controller, $url[1]))
{
$this->method = $url[1];
unset($url[1]);
}
}
$this->params = $url ? array_values($url) : [];
call_user_func_array([$this->controller, $this->method], $this->params);
}
public function parseUrl()
{
if(isset($_GET['url']))
{
return $url = explode('/', filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
}
}
'if($ url){$ this-> params = array_values($ url); } else $ this-> params = []; ' – splash58
最初のコードは' $ url'の内容を 'true'でチェックすることを説明することが重要です。あなたの例は、変数が設定されているかどうかだけをチェックします。そして、条件がうまくいかない場合( 'else')には解決策を提示しませんでした。とにかく、通信員は@ splash58のようにコメントされています。 – FirstOne
そのフォーマットは '$ variable = $ condition? $ value_if_true:$ value_if_false' – morcen