Проблем с взимане на стойност от $_POST към атрибут на клас

rain

Registered
Имам 2 въпроса:
1. Как да прехвърля стойност на променлива извън клас към променлива/атрибут на клас?
2. Защо в кода по-долу не мога на атрибута $content на клас page да присвоя стойност, зададена от форма
(При следния код излиза грешка от тип "unexpected T_VARIABLE"):idea:

var $content=$_POST['filename']; //не работи
var $content=getc($_POST['filename']); //не работи

но всичко е ОК при
//метод на класа page
function DisplayContent(){
echo "<p>".getc($_POST['filename'])."</p>"; //работи
}
или
SetContent(getc($_POST['filename']));

PHP:
<?php 
$filename=$_POST['filename'];
global $filename;
	function getc($filename){	
	@$handle=fopen($filename, 'r') or die('Can\'t fopen');
	$contents=fread($handle,filesize($filename)) or die ('Can\'t fread');
	return $contents;
	fclose($filename) or die ('Can\'t fclose');}
class Page{

var $content;
//var $content=getc($_POST['filename']);
//var $content=getc($filename);
//var $content=$_POST['filename'];
	function SetContent($newcontent){
	$this->content=$newcontent;
	}
	 function DisplayContent(){
	echo "<p>".$this->content."</p>"; 
	//echo "<p>".getc($_POST['filename'])."</p>";	//работи
	} 
	function Display()
	{
		$this->SetContent(getc($_POST['filename']));
		$this->DisplayContent();
//
	}
}
$a=new page();
$a->Display();

?>
Формата е:
HTML:
		<form action='' method='POST'>
		<input type='file' name='filename' />
		<input type='submit' />
		</form>
 
Защото $content важи само за класа. Ако искаш отвън класа да подадеш стойност трябва да я подаваш така

PHP:
$a->content = $_POST['...'];


Това, което правиш е неправилно. Не подавай ПОСТ метода директно в класа.
Можеш да го направиш да се подават стойности директно в конструктора. От там ги прехвърляш на локална променлива(може и да е масив). След това във всички локални методи функции можеш да използваш тези данни.

Ако кажеш какво всъщност искаш да направиш може и да ти го обясня по-добре, но иначе има още какво да се иска от теб, за да хванеш смисъла на ООП.
 
Да, точно това ми трябваше! Мерси :D

И на мен не ми допада това подаване на ПОСТ данни директно в класа,
а исках да ги обработя извън него и да ги подам тогава.

:)
 

Back
Горе