자주 권장되는 자습서 Build a PHP MVC Application을 따라 갔고 단축 된 if 문인 Build a PHP MVC Application 코드를 실행하여 ?
및 :
을 사용했습니다. 이런 종류의 짧은 코드에 대해서는 익숙하지 않기 때문에 필자는 그것을 작성하는 방법을 다시 만들려고했습니다.코드 줄을 if 문으로 바꾸기
$this->params = $url ? array_values($url) : [];
내가 해낸 :
if(isset($url))
{
$this->params = array_values($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