Поставил PHP5, появилась новая ошибка при обращении к фунции pages из одноименного класса: Fatal error: Non-static method Pages:ages() cannot be called statically in X:\home\cms2\www\admin.php on line 786 Впервый сталкиваюсь с такой ошибкой. В чем может быть проблема? Функция выводит иерархию страниц у сайта и имеет следущий вид: $fa - ID старшей страницы $n - ID текушей страницы PHP: Class Pages { function pages($fa,$n,$opt) // вывод существующих страниц для редактирования { $mvr = mysql_query("select * from 0pages where FATHER = $fa"); $t = mysql_num_rows($mvr); if ($t>0) { $px = 20 * $n; $px_menu = 12 * $n -5; $n++; for ($i=0; $i<$t; $i++) { $f = mysql_fetch_array($mvr); $URL = "/".($f['URL1']!=""?$f['URL1']."/":""); if ($f['VISIBLE']==1) { $css= "visible"; } else { $css= "invisible"; } if ((@$_GET['edit']==$f['ID'])||(@$_GET['add']==$f['ID'])) { $cs= "_red"; } else { $cs= ""; } if($opt!="menu") { echo "<tr class='".$css." plain".$cs."' onMouseOver= \"this.className= '".$css." rollover".$cs."'; \" onMouseOut= \"this.className= '".$css." plain".$cs."'; \" >"; echo "<td width=30% nowrap valign=center style=padding-left:".$px."px;padding-right:20px;><a href=?add=".$f['ID']."><img src=/images/add.gif border=0 height=10 alt='добавить страницу'></a> ".$f['ID']." "; echo "<a href=?edit=".$f['ID']."><b>".$f['TITLE']."</b></a></td> "; echo "<td width=* nowrap><a href=".$URL.">".$URL."</a></td>"; echo "<td width=30><a href=?edit=".$f['ID'].">edit</a></td>"; echo "<td width=50 class=red><a href=?delete=".$f['ID']."><font color=#FF3300><b>delete</b></font></a></td></tr>"; } if($opt=="menu") { // <start> обрезание длинных названий в меню $count_url = count(explode("/", ($f['URL1']!=""?$f['URL1']."/":""))); $line = (34 - 2 * $count_url); $f['TITLE'] = (substr($f['TITLE'],0,$line)!=$f['TITLE']?substr($f['TITLE'],0,$line)."..":$f['TITLE']) ; // <end> обрезание длинных названий в меню echo "<div class='".$css." plain2".$cs."' onMouseOver= \"this.className= '".$css." rollover2".$cs."'; \" onMouseOut= \"this.className= '".$css." plain2".$cs."'; \" "; echo "nowrap valign=center style=padding-left:".$px_menu."px;padding-right:5px;><a href=?add=".$f['ID']."><img src=/images/add_small.gif border=0 alt='добавить страницу' ></a> ".$f['ID']." "; echo "<a href=?edit=".$f['ID'].">".$f['TITLE']."</a></div> "; } Pages :: pages($f['ID'],$n,$opt); } } } } [/code]
Ты наверное пытаешься его вызвать, вот так: PHP: <?php Pages::pages($fa,$n,$opt); ?> Вместо, вот так: PHP: <?php $pages = new Pages; $pages->pages($fa,$n,$opt); ?> Так что бы можно было так обращаться к методу класса, как в первом варианте, его нужно соответственно объявлять: PHP: <?php public static function pages($fa,$n,$opt) { ... } ?>
у меня PHP 5.2.4 спасибо, такой вариант помог. PHP: <?php $pages = new Pages; $pages->pages($fa,$n,$opt); ?>