我正在尝试通过学习opencart源代码来学习使用php进行实际应用,而我却陷入困境
// Register Globals
if (ini_get('register_globals')) {
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
session_set_cookie_params(0, '/');
session_start();
$globals = array($_REQUEST, $_SESSION, $_SERVER, $_FILES);
foreach ($globals as $global) {
foreach(array_keys($global) as $key) {
unset(${$key});
}
}
}
unset($ {$ key})究竟做了什么?
为什么opencart使用myisam引擎?
答案 0 :(得分:1)
1)它清除变量,其中$_SESSION
,$_REQUEST
,$_SERVER
和$_FILES
个变量中的键(如果它们为空),而不是该变量的内循环迭代将被跳过(无需检查它是否已设置,因为它将始终默认设置)
例如。如果设置了变量$foo
并设置了$_SESSION['foo']
,则会设置$foo
,而不是$_SESSION['foo']
。
2)它是变量变量。如果$key = 'foo'
,则unset(${$key})
将取消$foo
变量。
3)向opencart开发人员询问原因。
答案 1 :(得分:0)
Justinas是正确的,您正在查看的代码部分基本上删除了许多全局变量,以迫使OpenCart开发人员使用可用的内部方法($ this-> request-> server []和$ this->会话例如)。 OC开发人员已经这样做,以便他们可以确保在整个商店代码中始终如一地处理数据。
我相信myisam的选择是为了向后兼容。当开发OC 1.x时,innodb并没有像现在这样受到广泛支持。他们目前正在研究OC 2,我认为可以做出选择。有很多代码块可以改变数据库格式并为性能应用额外的索引。
OpenCart实际上是一个非常好的平台,可以让你在MVC校长中崭露头角,但是当你提到你正在学习PHP时,我也会对一些通用的PHP代码进行搜索。根据你做的事情,MVC可能会有点矫枉过正。