Jag har försökt söka på vad det kan vara för fel. Men det ger inte många svar
Kodsnutten jag får detta fel på är
public function leafNodes()
och det jag kan komma på är att det handlar om namnkonflikt i php5 för i lägre versioner fungrar det tydligen.
Vet inte vad jag ska göra. Är det något man ska koppla på i php-inifilen kanske eller?
Någon som kan hjälpa mig?
unexpected T_PUBLIC
10 svar · 798 visningar · startad av tanten
Visa mer kod!
public function leafNodes(){
$stmt = DB::getInstance()->prepare("SELECT name FROM categories WHERE right_node = left_node + 1");
$stmt->execute();
return $stmt->fetchALL(PDO::FETCH_ASSOC);
}
och felet
Parse error: syntax error, unexpected T_PUBLIC in xxx\leafnodes.php on line 12
Jag skulle spontant gissa på att du har fel tidigare i din kod, ett missat semikolon/hakparentes eller ett hårt blanksteg istället för ett vanligt.
Nej nu har jag raderat allt innan vilket bara var en kommentar och require("db.class.php"); felet kvarstår.
ge mer kod. Gärna både db.class.php samt leafnodes.php
Nu fick jag ju felet även när jag plockade bort db men så här ser db ut
<?php
class DB{
private static $instance = NULL;
private function __construct() {
}
public static function getInstance() {
if (!self::$instance)
{
self::$instance = new PDO("mysql:host=localhost;dbname=animals", 'root', 'xxx');;
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
private function __clone(){
}
}
?>
leafnodes.php
<?php
require("db.class.php");
public function leafNodes(){
$stmt = DB::getInstance()->prepare("SELECT name FROM categories WHERE right_node = left_node + 1");
$stmt->execute();
return $stmt->fetchALL(PDO::FETCH_ASSOC);
}
?>
och
i filen där error kommer
<?php
require("leafnodes.php");
$iterator = new RecursiveIteratorIterator(new recursiveArrayIterator($hierachy->leafNodes()));
try {
foreach($iterator as $key=>$value)
{
echo $value.'<br />';
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
Du ska inte ha public framför en vanlig funktion, vilket du har nu :) leafNodes ingår inte i någon klass, därav så får du inte använda "keywords" innan.
*SNIP*
Ah, colione har nog rätt. :)
Nu fick jag det att fungera :) Tack för tipsen...
<?php
require("db.class.php");
class hierachy{
public function leafNodes(){
$stmt = DB::getInstance()->prepare("SELECT name FROM categories WHERE right_node = left_node + 1");
$stmt->execute();
return $stmt->fetchALL(PDO::FETCH_ASSOC);
}
}
$hierachy = new hierachy;
$iterator = new RecursiveIteratorIterator(new recursiveArrayIterator($hierachy->leafNodes()));
try {
foreach($iterator as $key=>$value)
{
echo $value.'<br />';
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>