我正在阅读 opencart php 源代码,但我无法弄清楚。请查看“$url = $rewrite->rewrite($url);”处的函数 rewrite()
<?php
class Url {
private $url;
private $rewrite = array();
public function link($route, $args = '', $connection = 'NONSSL') {
....
foreach ($this->rewrite as $rewrite) {
$url = $rewrite->rewrite($url);
}
return $url;
}
public function addRewrite($rewrite) {
$this->rewrite[] = $rewrite;
}
}
?>
为什么上面的代码不会产生错误?
重写函数没有在类 Url 中定义,并且类 Url 没有扩展任何人??但后来我更深入地跟踪,似乎函数重写是在 seo_url 类。
class ControllerCommonSeoUrl extends Controller {
// Add rewrite to url class
if ($this->config->get('config_seo_url')) {
$this->url->addRewrite($this);
}
...
public function rewrite($link) {
if ($this->config->get('config_seo_url')) {
$url_data = parse_url(str_replace('&', '&', $link));
....
为什么 ?我还没有看到“Url”和这个“ControllerCommonSeoUrl”之间有任何联系。我在这里错过了一些概念吗?我应该怎么做才能理解这些代码?这里需要一点指导。