webForumDet fria alternativet

unexpected T_PUBLIC

10 svar · 798 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#1

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?

TroxyMedlem sedan mars 20041 505 inlägg
#2

Visa mer kod!

tantenMedlem sedan nov. 20051 596 inlägg
#3
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
GislavedMedlem sedan nov. 20041 740 inlägg
#4

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.

tantenMedlem sedan nov. 20051 596 inlägg
#5

Nej nu har jag raderat allt innan vilket bara var en kommentar och require("db.class.php"); felet kvarstår.

colioneMedlem sedan juni 20014 421 inlägg
#6

ge mer kod. Gärna både db.class.php samt leafnodes.php

tantenMedlem sedan nov. 20051 596 inlägg
#7

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();
    }
 
?>
colioneMedlem sedan juni 20014 421 inlägg
#8

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.

jmeMedlem sedan maj 20012 237 inlägg
#9

*SNIP*

jmeMedlem sedan maj 20012 237 inlägg
#10

Ah, colione har nog rätt. :)

tantenMedlem sedan nov. 20051 596 inlägg
#11

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();
    }
?>
133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)