Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как исправить класс? $this вне контекста / 4 сообщений из 4, страница 1 из 1
22.10.2012, 13:02:42
    #38008017
PsychoPM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как исправить класс? $this вне контекста
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
<?php
/*
	product: p_id(int)
	product_option: po_id,name
	product_option_value: pov_id(int),p_id(int),po_id(int),enable(boolean)
*/
class product{ 
	const PRODUCT_NOT_EXISTS = -1;
	const PRODUCT_CREATED_BUT_NOT_SAVED = -2;	
	
	protected $options = array();
	protected $product_id = PRODUCT_NOT_EXISTS;
	protected $important_options = array('p_id','title','price','addtimestamp','savetimestamp');
	
	public static function add(){
		$product_id = PRODUCT_CREATED_BUT_NOT_SAVED;
	}
	
	public static function get($id){
		$product_id = $id;
		if(!$this->manage('exists')){
			$product_id = PRODUCT_NOT_EXISTS;
		}
		return false;
	}
	
	public function __construct($id){
		if($id == PRODUCT_CREATED_BUT_NOT_SAVED) $this->add();
		if($id != PRODUCT_NOT_EXISTS){
			$this->get($id);
		}else{
			return false;
		}
	}
	
	
	private static function manage($action)
	{
		if($action == 'delete'){
			$this->product_id = PRODUCT_NOT_EXISTS;
		}
		if($action == 'exists'){
			if($this->product_id != PRODUCT_NOT_EXISTS){
				return true;
			}else{
				return false;
			}
		}
		if($action == 'save'){
		}
	}

	public static function option($action,$key,$value = ''){	
		if($action == 'save'){
			$this->options[$key] = $value;
		}
		if($action == 'get'){
			if($this->option('exists',$key)){
				return $this->options[$key];
			}
			return false;
		}
		if($action == 'remove'){
			if (in_array($key, $this->important_options)){
				return false;
			}
			if(isset($this->options)){	
				unset($this->options[$key]);
				return true;
			}else{
				return false;
			}
		}
		if($action == 'exists'){
			if(isset($this->options[$key])){
				return true;
			}else{
				return false;
			}
		}
	}
	
	private static function output($type){
		if($type == 'json') return json_encode($this->options);
		if($type == 'array') return $this->options;
		if($type == 'xml')
		{
			if(class_exists('SimpleXMLElement'))
			{
				$xml = new SimpleXMLElement('<root/>');
				array_walk_recursive($this->options, array ($xml, 'addChild'));
				print $xml->asXML();
			}
			return false;
		}
	}
}

$p_object = new product(1);

?>



Выдает ошибку
Fatal error: Using $this when not in object context on line 21

Код: php
1.
if(!$this->manage('exists'))



по этому вопросу гуглил и даже был в этой теме http://www.sql.ru/forum/actualthread.aspx?tid=834110
но как пофиксить чего-то неясно.
...
Рейтинг: 0 / 0
22.10.2012, 13:11:51
    #38008029
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как исправить класс? $this вне контекста
self::manage
...
Рейтинг: 0 / 0
22.10.2012, 13:14:59
    #38008036
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как исправить класс? $this вне контекста
PsychoPM, внутри static методов переменная $this не существует.

Читай документацию - Static Keyword .
...
Рейтинг: 0 / 0
22.10.2012, 20:01:01
    #38008800
PsychoPM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как исправить класс? $this вне контекста
спасибо, читаю мануал
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как исправить класс? $this вне контекста / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]