LINUX.ORG.RU

[ООП][PHP] Начал изучать


0

0

Итак есть у меня класс который выдовать значения из базы по имени

class Settings
{
	function Load($name)
	{
		$sql = mysql_query("SELECT `value` FROM `settings` WHERE `name` = '".$name."'");
		if (mysql_num_rows($sql) != 1)
		{
			return false;
		}
		else
		{
			$value = mysql_result($sql,0);
			return $value;
		}
	}
}
Подгружаю его в другом файле
include ('include/Settings.class.php');
$Config = new Settings();
и запрашиваю его в функции
function loadSkin()
{
	$skin = $Config->Load('skin');
	
	if (!is_file('skin/'.$skin.'/page.php'))
	{
		echo 'Параметр темы сайта не установлен или неверен';
	}
	else
	{
		include ('skin/'.$skin.'/page.php');
	}
}
но всё вываливается с ошибкой

Fatal error: Call to a member function Load() on a non-object in /home/*/www/include/kernel.php on line 17

★★★

Ответ на: комментарий от chapay

>global $Config сделать?

Да. Еще лучше внеси $Config = new Settings(); в тело функции, еще лучше - сделай $Config членом класса с методом loadSkin(), намного лучше будет, когда прекратишь писать велосипеды и откроешь для себя propel/doctrine/..., совсем хорошо станет, когда НЕ БУДЕШЬ ПИСАТЬ НА ЭТОМ ПОДЕЛИИ ДЛЯ ШКОЛОТЫ!!!111 и прочитаешь docs.djangoproject.com.

P.S. Я надеюсь, что тут «SELECT `value` FROM `settings` WHERE `name` = '».$name.«'» инъекции не будет, поскольку $name - безопастная строка.

P.P.S. s/function Load/public function Load/, не? XXI век на дворе, а php4 никак не закопают.

anonymous ()
Ответ на: комментарий от anonymous

> совсем хорошо станет, когда НЕ БУДЕШЬ ПИСАТЬ НА ЭТОМ ПОДЕЛИИ ДЛЯ ШКОЛОТЫ!!!111 и прочитаешь docs.djangoproject.com.
С этого надо было начинать, этим стоило и закончить.

По сабжу: у PHP много странных политик, иногда проще выучить другой язык, чем все подводные камни.

Divius ★★ ()

Согласившись с вышесказанным о джанго, хочу заметить, что если уж и писать на пхп, то используя PDO а не унылейшие *_query, зависящие от типа БД.

anonymous ()
Ответ на: комментарий от anonymous

вставляя свои 5 копеек замечу что ТС необходимо сначала освоить хотя бы на среднем уровне сам язык программирования (те же глобальные переменные много о чем говорят), познакомиться с набором стандартной библиотеки и стандартных модулей, затем познакомиться с объектно-ориентированным программированием как парадигмой, с обхектно-ориентированным проектированием и дизайном, инверсией зависимостей, и уж потом начинать серьезно в этом осваиваться. меньше brainfuck'а могло бы доставить освоение последних на каком-нибудь gneral-purpose ЯП, а потом уж php.
одно слово class и вызов функций «через стрелочки» не даст желаемого результата, увы :(.

trashymichael ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.