これは、ZFの設計よりもセキュリティとは関係がありません。あなたが言ったように、URLを介して呼び出された場合、メソッドにはアクセスできませんが、それはZendFrameworkがリクエストを処理する方法にのみ起因します。
リファレンスガイドの引用:
のワークフローZend_Controller
は比較的単純です。によって要求が受信されZend_Controller_Front
、次に、Zend_Controller_Router_Rewrite
どのコントローラー(およびそのコントローラー内のアクション)をディスパッチするかを決定するために呼び出します。
Zend_Controller_Router_Rewrite
リクエストにコントローラーとアクションの名前を設定するために、URIを分解します。Zend_Controller_Front
次に、ディスパッチループに入ります。要求を呼び出しZend_Controller_Dispatcher_Standard
て、要求で指定されたコントローラーとアクションにディスパッチします(またはデフォルトを使用します)。
メソッド名は次の形式でフォーマットされZend_Controller_Dispatcher_Abstract
ます:
/**
* Formats a string into an action name. This is used to take a raw
* action name, such as one that would be stored inside a Zend_Controller_Request_Abstract
* object, and reformat into a proper method name that would be found
* inside a class extending Zend_Controller_Action.
*
* @param string $unformatted
* @return string
*/
public function formatActionName($unformatted)
{
$formatted = $this->_formatName($unformatted, true);
return strtolower(substr($formatted, 0, 1)) . substr($formatted, 1) . 'Action';
}
Actionサフィックスはハードコーディングされているため、Dispatcherは常にActionメソッドを探します。したがって、リクエストするときは、リクエストの処理方法のために/user/show/
電話をかけます。UserController::showAction()
ただし、これはセキュリティ機能ではなく、Visibilityに代わるものでもありません。保護showAction()
すると、URLを介してアクセスできなくなります。また、技術的には、通常のセットアップでも実行しない場合は、URIから非アクションメソッドを呼び出すことができます。独自のディスパッチャを作成し、ZFがアクション名を簡単にフォーマットする方法を変更できます。
アクションサフィックスの優れている点は、アクションメソッドをコントローラー内の他のメソッドと明確に区別できることです。