powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как исправить класс? $this вне контекста
4 сообщений из 4, страница 1 из 1
Как исправить класс? $this вне контекста
    #38008017
PsychoPM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как исправить класс? $this вне контекста
    #38008029
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
self::manage
...
Рейтинг: 0 / 0
Как исправить класс? $this вне контекста
    #38008036
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsychoPM, внутри static методов переменная $this не существует.

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


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