ZendFrameworkの「カスタムルーティング」を使えば対応可能ではないかと思われます。
参考記事:
[Zend Framework] Zend_Controller: ルーティングを変更して、任意のURIでアクセスできるようにする(1)
https://www.d-wood.com/blog/2013/07/10_4238.html
[Zend Framework] Zend_Controller: ルーティングを変更して、任意のURIでアクセスできるようにする(2)
https://www.d-wood.com/blog/2013/07/11_4249.html
⇒(1)からお読みいただければと思いますが、実際にやりたいことは(2)に詳しく記載されていると思います。
なお、こちら、ZendFramework1の記事です。
ZendFramework2の場合、少し設定方法が異なる可能性があります(その場合、「ZendFramework2 カスタムルーティング」等のキーワードで検索していただくと、役に立つ記事がHITするかと思われます)。
回答へのコメントを受けて。
「どのURLだったら、どのコントローラーのどのメソッドを呼ぶか」を制御しているのがルーティングです。
ZFのデフォルトのルーティングは、wan_wanさんご自身も書かれているとおり
http://www.mydomain.com/{controller}/{action}/{parameter_name}/1
ですので、ルーティングを変更せずに
http://www.mydomain.com/{controller}/1
と実行すると、{controller}Controllerの"1Action"というメソッドを呼ぼうとしてしまいます。
この動作を変えるにはカスタムルーティングをするしかありません。
呼び出すコントローラー&メソッドを決定するルールを変更しなければならないので、少なくとも、コントローラー=呼び出される側では制御不能ですし、頑張って「ZF標準のカスタムルーティング」以外の方法を探したとしても、どうしても「サイト全体で使用するファイル」を修正することになると思います。
なお、カスタムルーティングはURLパターン毎に設定をするため、基本的には設定したURLパターン以外には影響を及ぼさないはずです(設定を誤ってフレームワーク全体でエラーが発生してしまった、といったケースを除く)。
なお、トリッキーな実装になってしまうのでおススメはしませんが……。
もし、引数が数字から始まるものでなければ、コントローラー内でマジックメソッド __call
を使用し、実際には存在しないAction(aActionやbAction等)を呼ばれた時の動作を __call
メソッドで拾って処理する、という方法もあったかと思います。
アクセス不能メソッドを実行する__call()と__callStatic()の使い方
http://www.atmarkit.co.jp/ait/articles/1509/03/news021_2.html#04
ただし、PHPのメソッド命名規約に「メソッド名の一文字目に、数字は使えない」というものがあるため、パラメータが数字の場合はこの方法は使えません(http://www.mydomain.com/hoge/1 の場合 "1Action"を呼ぼうとする⇒規約違反でエラーになるため)。
メソッドの定義と命名規則
http://alphasis.info/2012/07/php-oop-method/
__call
を使った実装例)
http://www.mydomain.com/hoge/a
http://www.mydomain.com/hoge/b
⇒これらにアクセスしようとするとHogeControllerのaActionやbActionを呼ぼうとするので、
php
1class HogeController
2{
3 public function __call($name, $args)
4 {
5 if (strpos($name, "Action") !== false) {
6 // メソッド名(aActionやfugaAction)から"Action"という文字列を削除したものが、実際に欲しいパラメータ
7 $id = str_replace("Action", "", $name);
8 return $this->defaultAction($id);
9 }
10 }
11
12 private function defaultAction($id) {
13 // 実際にやりたい処理
14 }
15}
でやりたいことは実現できたのではないかと(※動作未検証です)。