首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >php opencart方法在类中没有定义但可以调用?

php opencart方法在类中没有定义但可以调用?
EN

Stack Overflow用户
提问于 2012-11-22 10:55:35
回答 3查看 549关注 0票数 0

我正在阅读opencart php源代码,但我搞不懂。请在"$url = $rewrite->rewrite($url);“查看函数rewrite()。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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类上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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('&amp;', '&', $link));
             ....

为什么?我还没有看到'Url‘和这个'ControllerCommonSeoUrl’之间的任何联系。我是不是漏掉了什么概念?我应该怎么做才能理解这些代码?这里需要一点指导。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-22 11:17:02

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach ($this->rewrite as $rewrite) {

迭代遍历中的任何值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private $rewrite = array();

也许那个Url->rewrite数组包含ControllerCommonSeoUrl的一个实例,这就解释了为什么$rewrite->rewrite()调用ControllerCommonSeoUrl->rewrite()

此外,您也可以通过尝试学习使用调试器来帮自己一个忙:)

票数 2
EN

Stack Overflow用户

发布于 2012-11-22 11:26:51

检查控制器是否正在加载脚本中的任何模型如果是,则可以在脚本中简单地访问模型方法,这可能是脚本的情况,如$this->重写。

票数 0
EN

Stack Overflow用户

发布于 2012-11-22 12:02:39

Url类是一个泛型类,可以调用多个网址重写方法,使人们可以更改网址重写代码。触发SEO代码以将其添加到Url类是在index.php文件中通过以下方式完成的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// SEO URL's
$controller->addPreAction(new Action('common/seo_url'));

执行该操作时,ControllerCommonSeoUrl将执行index()方法,并且与您提供的代码一样,它将检查SEO在设置中是否处于活动状态。如果是,则将当前类添加到Url类中的重写数组中。然后,每当有人调用$this->url->link()时,每个重写类都会调用它们的rewrite()方法,随后的URL会被回传

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13511196

复制
相关文章
Apache2与PHP5 for WinXP简单配置技巧
由于php是一个zip文件(非install版),安装较为简单,解压就行。把解压的 php5.2.1-Win32重命名为 php5。并复制到C盘目录下。即安装路径为 c:php5 
会长君
2023/04/26
5460
如何在Ubuntu, Linux Mint中安装Linux Kernel 4.18
Linus Torvalds终于在12日下午宣布发布Linux Kernel 4.18。 他在lkml.org写道:
知忆
2021/06/22
6.5K0
安装XCache以加速和优化PHP性能
在大多数情况下,PHP的性能可以减慢网站的效果。 为了优化和加速网站性能,您需要提高PHP性能。 为了这个目的,你可以使用操作码cachers如eAccelerator在, APC , Memcached的 ,了XCache等就个人而言,我最喜欢的选择了XCache。
子润先生
2021/06/15
7090
Linux Mint cinnamon Crashed…
Cinnamon crashed, running in fallback mode… Cinnamon 喜欢崩溃这是出了名的,刚刚从ubuntu切换到LinuxMint系统,正在为其简单快速而窃喜。我正想这个系统真棒,集成了这个多软件,操作如此简单。没想到…
gigiwangs
2019/03/01
6.1K0
Apache2不支持php5的解析解决方案
今天想写个php玩玩的结果突然发现我的apache2突然挂掉了,也不晓得怎么回事,于是就用彻底删除的命令apt-get remove --purge apache2 将他卸载然后重装。重装上去之后发现localhost可以打开了,但是php解析不了了。不光自己写的php无法解析,就连打开phpmyadmin也都变成了源码,十分的蛋疼。找了半天才发现原因是我在彻底卸载apache2的时候,--purge 参数把apache2对php5支持的模块也删掉了。。。。。所以,理所应当的死也登不上喽。
mythsman
2022/11/14
4120
在 LVM 上安装 Linux Mint
在 Linux Mint 临场 ISO 中,你可以通过终端和 GUI 工具访问 Linux 命令行工具。如果你需要做任何分区工作,你可以使用命令行 fdisk 或 parted 命令,或者 GUI 应用 gparted。我想让这些操作简单到任何人都能遵循,所以我会在可能的情况下使用 GUI 工具,在必要时使用命令行工具。
用户8965210
2021/09/27
9K0
Crontab 执行 python 脚本不生效?
我相信这不是我一个人的经历:傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。
小闫同学啊
2019/11/18
4.3K0
Linux Mint 19体验学习笔记
周末的时候,明月实在是无法忍受 Windows 10 的频繁蓝屏重启了,就用网上下载的净化版GHO镜像文件给恢复了一下,只要不做更新,使用就很正常,看来微软裁撤了测试组以后, Windows 10 的更新也得慎用了,弄不好就被当“小白鼠”对待了。搞定了 Windows 10 后就想着试试最近刚刚发布的 Linux Mint 19 这个桌面 Linux 发行版。
明月登楼的博客
2019/05/15
9K0
Linux Mint 19体验学习笔记
lamp安装配置详细过程(把以前的笔记贴上来)
如果看到php5 php apache2 apache mysql mysql5 libxml libxml2字样的目录都将其删除具体命令如下
黄规速
2022/04/14
8160
Ubuntu 中搭建 LAMP 及 php 开发工具
打开浏览器,在地址栏输入:127.0.0.1,如果出现了 “It works!”,表明安装成功
用户4988085
2021/07/27
1.5K0
cnetos7中搭建 LAMP 及 php 开发工具
打开浏览器,在地址栏输入:127.0.0.1,如果出现了 “It works!”,表明安装成功
用户1685462
2021/07/30
7940
Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器
Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器
星哥玩云
2022/06/30
3.8K0
Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器
ubuntu下搭建wordpress站点
  之前使用的是阿里云的php虚拟空间,可以只需要把wordpress包上传后就可以了,但感觉这样不灵活,虚拟空间也只能用来搭博客,不能干其他事。 所以我买了阿里云的ecs,其实就是一个远程linux虚机主机。 为了搭建博客,我必须安装配置php环境、ftp、apache、mysql等东西,踩了一部分坑,为了让大家少踩坑,特意在此记录我在ubuntu搭建workpess的过程,作为大家参考手册。
xindoo
2021/01/22
1.1K0
Ubuntu 下安装apache+PHP
运行如下命令重启:sudo /etc/init.d/apache2 restart
zhangheng
2020/04/29
1.5K0
Linux Mint 19 将基于 Ubuntu 18.04 LTS
Linux Mint项目负责人Clement Lefebvre在该项目2017年的最新月刊中透露,开发团队将很快发布下一个主要的 Linux Mint 和 LMDE。
Debian中国
2018/12/20
8.1K0
PHP5中的魔术方法
php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。
用户7657330
2020/08/14
2.6K0
jenkins 执行 shell脚本不稳定
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000 ms]
不凡
2021/10/09
3.7K0
PHP5中Cookie与 Session详解
1、Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断。 区别 Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不
joshua317
2018/04/16
9570
运维之LAMP环境安装与配置
LAMP发展 LAMP这个特定名词最早出现在1998年,是Linux操作系统、Apache网页服务器、MySQL数据库管理系统和PHP程序模块,四种技术名称开头字母缩写组成的。是一组常用来搭建动态网站或者服务器的开源软件组合, 本身都是各自独立的软件,但是因为常被结合在一起使用,并拥有越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
全栈工程师修炼指南
2022/09/28
2.7K0
运维之LAMP环境安装与配置
在 Ubuntu 14.04 和 Linux Mint 17 中通过 Texmaker 来使用LaTeX
LaTeX是一种文本标记语言,也可以说是一种文档编撰系统。在很多大学或者机构中普遍作为一种标准来书写专业的科学文献、毕业论文或其他类似的文档。在这篇文章中,我们会看到如何在Ubuntu 14.04中使用LaTeX。
知忆
2021/06/17
1.7K0

相似问题

将所有表数据和表结构从一个用户复制到另一个用户。

12

将数据从一个表复制到另一个表

21

将列从一个表复制到另一个表

22

将字段从一个表复制到另一个表

22

将数据从一个表复制到另一个表

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文