В стремительно приближающемся релизе Yii 1.1.4 будет довольно приятная возможность. Теперь можно будет использовать $_GET-параметры как параметры действия контроллера.
Теперь вместо:
class PostController extends CController { public function actionCreate() { if(isset($_GET['category'])) $category=(int)$_GET['category']; else throw new CHttpException(404,'invalid request'); if(isset($_GET['language'])) $language=$_GET['language']; else $language='en'; // ... действительно полезная часть кода ... } }
можно будет так:
class PostController extends CController { /** * Создание поста. * @param integer $category ID категории нового поста * @param string $language язык нового поста */ public function actionCreate($category, $language='en') { // ... действительно полезная часть кода ... } }
При этом, если в $_GET не оказалось указанного параметра и для параметра нет значения по умолчанию, будет выброшено исключение CHttpException.
Если в PhpDoc метода присутствуют типы параметров (поддерживаются integer(
int),
boolean(
bool),
float(
double) и
string`), происходит автоматическое приведение типа из $_GET к указанному.
UPD: после пары дней внутренних и внешних обсуждений было решено выкинуть приведение типов.