При попытке получить доступ к методу я определен в классе PHP из другого метода в том же классе, я получаю следующее сообщение об ошибке:PHP класс не распознает this-> метода()
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /var/www/
. .. /TOC.php on line 57
Раньше я выполнял эти функции вне любого класса, включая их там, где они мне были нужны. Переместив их в один, сначала я подумал, что должен иметь проблему this user, но с экземпляром класса я могу без проблем вызвать метод рендеринга из другого файла. Комментирование строки this->printTreeArray($sectionProjects);
устраняет ошибку. Вот мой класс:
<?php
class TOC{
private function printTreeArray($sectionProjects){
echo "var TOCnodes = [\n";
//Print each section, with another loop to print each one's problems
$i = 0;
foreach($sectionProjects as $sectionProject){
if($i != 0){
echo ",\n";
}
$project = $sectionProject->getProject();
//Get due date for mouseover text
$due = $project->getDueDate('F jS, Y h:i A');
$q = new ProjectProblemQuery();
$projectProblems = $q->findByRelProjectId($project->getId());
$pId = $i + 1;
echo "{id: $pId, pId: 0, name: \"Project $pId\", title: \"Due: $due\", isParent: true, open: true}";
//Print this section's problem list
$probId = 1;
foreach($projectProblems as $projectProblem){
echo ",\n";
$nodeId = ($pId * 10) + $j;
echo "{id: $nodeId, pId: $pId, name: \"$pId.$probId\", url: \"#\", target: \"_top\"}";
$j++;
}
$i++;
}
echo"];\n";
}
public function render($section){
if(! $section instanceof Section){
echo "$section is not an instance of Section!";
}
else{
echo "<ul id=\"TOCtree\" class=\"ztree\"></ul>\n";
echo "<script type=\"text/javascript\">\n";
$sectionProjects = $section->getSectionProjects();
this->printTreeArray($sectionProjects);
echo "$(document).ready(function() {
$.fn.zTree.init($(\"#TOCtree\"), setting, TOCnodes);
});";
echo "</script>";
}
}
}
Это мой первый раз, задавая вопрос о SO - в общем, я был в состоянии найти ответы на мои кодирования дилемм, но это один имеет меня озадачило. Я понимаю, что в этом классе много не-элегантных вещей, поэтому, если есть смысл стиля, который я могу использовать, чтобы избежать такой ошибки в будущем, я бы очень признателен за то, что узнал об этом.
D'oh! Полезно знать, что $ это переменная в классе. Выйдя из Java, я подумал, что это ключевое слово или что-то в этом роде. Благодаря! – B1SeeMore
Ха-ха, никаких проблем! –