Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan penghalaan untuk memadankan ungkapan biasa dalam Rangka Kerja Zend

Cara menggunakan penghalaan untuk memadankan ungkapan biasa dalam Rangka Kerja Zend

PHPz
PHPzasal
2023-07-28 15:41:18749semak imbas

Cara menggunakan penghalaan untuk memadankan ungkapan biasa dalam rangka kerja Zend

[Pengenalan]
Dalam proses menggunakan rangka kerja Zend untuk pembangunan web, penghalaan ialah fungsi yang sangat kritikal. Ia membolehkan kami mengarahkan permintaan kepada pengawal dan tindakan yang berbeza berdasarkan URL yang berbeza untuk mencapai pemetaan URL yang fleksibel. Dalam sesetengah kes, kita perlu memadankan URL dengan lebih tepat Dalam kes ini, kita boleh menggunakan ungkapan biasa untuk menentukan peraturan penghalaan.

【Teks】

1. Buat kelas penghalaan tersuai
Pertama, kita perlu mencipta kelas penghalaan tersuai, yang mewarisi daripada Zend_Controller_Router_Route_Abstract. Berikut ialah contoh kelas penghalaan tersuai yang mudah:

class My_Route_Regex extends Zend_Controller_Router_Route_Abstract
{
    protected $_regex;
    protected $_defaults;
    protected $_reverse;

    public function __construct($route, $defaults = array(), $reverse = null)
    {
        $this->_regex = $route;
        $this->_defaults = $defaults;
        $this->_reverse = $reverse;
    }

    public function match($path)
    {
        if (preg_match($this->_regex, $path, $matches)) {
            $values = $this->_defaults;

            foreach ($matches as $key => $value) {
                if (is_string($key)) {
                    $values[$key] = $value;
                }
            }

            return $values;
        }

        return false;
    }

    public function assemble($data = array(), $reset = false)
    {
        return $this->_reverse;
    }
}

Dalam contoh ini, kami mentakrifkan pembina yang menerima tiga parameter: ungkapan biasa, nilai lalai dan rentetan untuk menjana URL secara terbalik. Kemudian, kami melaksanakan kaedah padanan() dan assemble() untuk memadankan URL dan menjana URL. Antaranya, kaedah padanan() menggunakan ungkapan biasa untuk memadankan URL Jika padanan berjaya, kaedah assemble() mengembalikan URL yang dijana secara terbalik.

2. Tambahkan penghalaan tersuai dalam Bootstrap
Seterusnya, kita perlu menambah penghalaan tersuai dalam Bootstrap. Kami boleh menggunakan contoh kod berikut:

protected function _initRoutes()
{
    $router = Zend_Controller_Front::getInstance()->getRouter();
    $route = new My_Route_Regex(
        '^/user/(?<id>d+)$', // 这里是正则表达式
        array(
            'controller' => 'user',
            'action' => 'profile'
        ),
        '/user/%s' // 这里是反向生成的URL模式
    );
    $router->addRoute('user', $route);
}

Dalam contoh ini, kami menggunakan ungkapan biasa '^/user/(?53384f78b45ee9f1e3082cf378b9c5b4d+)$' untuk memadankan URL '/user/123' dan memajukan permintaan ke tindakan 'profil' pengawal 'pengguna'. Corak URL yang dijana secara terbalik ialah '/user/%s', di mana '%s' akan digantikan dengan nilai id yang sepadan.

3. Gunakan penghalaan tersuai
Akhir sekali, kita boleh menggunakan penghalaan tersuai dalam pengawal. Berikut ialah contoh pengawal mudah:

class UserController extends Zend_Controller_Action
{
    public function profileAction()
    {
        $id = $this->_getParam('id');
        // 其他处理逻辑
    }
}

Dalam kaedah profileAction(), kita boleh mendapatkan nilai parameter dalam URL, seperti $id, dengan menggunakan kaedah _getParam(). Dalam pembangunan sebenar, kita boleh mengendalikan parameter ini mengikut keperluan kita sendiri.

【Ringkasan】
Menggunakan penghalaan ungkapan biasa membolehkan kami memadankan dan menjana URL dengan lebih tepat. Dengan menyesuaikan kelas penghalaan, kami boleh memproses URL dengan mudah. Dalam rangka kerja Zend, penghalaan ungkapan biasa ialah ciri yang sangat berkuasa dan fleksibel yang boleh memenuhi keperluan pembangunan yang berbeza. Saya harap artikel ini membantu anda menggunakan ungkapan biasa padanan laluan dalam Rangka Kerja Zend.

Atas ialah kandungan terperinci Cara menggunakan penghalaan untuk memadankan ungkapan biasa dalam Rangka Kerja Zend. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn