Class_view.php
包含类定义作为关联数组:
class View
{
private $viewArray = array();
function getViewArray() {
return $this->viewArray;
}
function addToViewArray($key, $value) {
$this->view[$key] = $value;
}
}
在Index.php中我有:
$view = new View();
$view->addToViewArray("title", "Projet JDelage");
// Much more code
include ("UI_Header.php");
导致错误的代码位于“标题”HTML标记周围的UI_Header.php
中:
<?php
echo '<?xml version="1.0" encoding="utf-8"?>'
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title><?php echo htmlspecialchars($view->getViewArray()['title']);?>
</title>
<link rel="stylesheet" media="screen" type="text/css" title="StyleSheetProjet" href="StyleSheetProjet.css" />
</head>
我正在尝试获取与此处显示的密钥'title'
相关联的值。
我得到的错误是:
解析错误:在第7行的Header.php中解析错误
答案 0 :(得分:4)
问题是$view->getViewArray()['title']
。 PHP还不支持这个(it will be included in the next PHP version。)现在你需要创建一个临时变量:
<?php $data = $view->getViewArray(); echo htmlspecialchars($data['title']); ?>
(但也许你不应该把它放在一行,这很难读。也许把$viewData = $view->getViewArray()
放在那个脚本的顶部;)
另一种方式( 方式 更优雅)是在类中实现ArrayAccess
接口,因此您可以直接使用$view['title']
。或者,如果您更喜欢使用对象访问而不是数组访问,则可以实现神奇的__get
方法(以及__set
,__unset
和__isset
方法(如果需要)。 )
答案 1 :(得分:2)
在PHP中,数组下标语法只能用于变量。你做不到$view->getViewArray()['title']
。您需要将$view->getViewArray()
的结果分配给变量,然后执行$variable['title']
。