回到只使用动态URL地址的日子,在应用程序代码中建立URL地址很容易,无须作很多计划。在这儿不能这么做了。如果想在网站中使用多关键词URL地址,只要在.htaccess文件中设置RewriteRule就已经足够了!还需要确保所有使用这些多关键词版本的链接,在整个网站中都是致的。显然,在网站中手工加入URL地址是不可取的——毕竟它是动态网站;而且,当中存在大量产品时,链接管理工作将很快变得无法完成!
幸而,对这个子问题有一咱直截了当的解决方案。只要用上它,任何额外的链接管理的工作都将是多余的。我们建议的这种解决方案就是根据数据库中已有的数据,比如产品名称或种类名称,使用函数来生成新的URL地址。正如前面所述,这也就强制实现了一致性。
假设有一种名为supeer Drill的产品,位于Tools种类下,已知产品ID是9,种类ID是5。利用这些数据,就很容易创建PHP函数来生成类似“/products/tools-c5/super-drill-p9.html”的链接。
在接下来的练习中,将创建并使用两个PHP函数:
(一)_prepare_url_text接收一个字符串参数,并将它转换为能够放入URL地址中的相应格式。比如,这个函数将“super drill”转换为“super-drill”。
(二)make_product_url接收产品和种类的名称及ID作为参数,并使用_prepare_url_text函数来生成一个类拟“/products/tools-c5/super-drill/p9.html”的URL地址。
如果你是一个PHP的面向对象编程(OOP)的爱好者,可能想将这些函数置入一个类中。在这种情况下,_prepare_url_text()函数应该是私有方法。因为它公供内部调用;而make_product_url()函数可以是公有方法。为了保持实例的简明扼要起见,但是下划线还是被用于作为函数前缀,来说明共仅供内部调用——例如_prepare_url_text()——使得最后移植为面向对象代码更容易。