Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Конструкторы пхп (https://javascript.ru/forum/server/13256-konstruktory-pkhp.html)

Golovastik 22.11.2010 22:18

Конструкторы пхп
 
Изучаю конструкторы на php.su.
Написал простой конструктор с одним параметром, он не выводится на экран, почему?

Код:

<?php
class A{
private $s; //Объявил свойство в качестве закрытого члена класса
function A($otdacha){
$this->s = $otdacha;
 }
}
 
$obj = new A("Санта Клаус");
 
?>


Kolyaj 22.11.2010 22:20

А почему он должен выводиться на экран?

Golovastik 22.11.2010 22:32

Скажите, как вывести правильно?
Ведь так тоже же нельзя в конструкторах:
function A($otdacha){
return $this->s = $otdacha;
 }

Так только в методах возможно, но не в конструкторах. Как тогда вывести результат?
Почему только так?
<?php
class A{
private $s;
function A($otdacha){
echo $this->s = $otdacha;
 }
}

$obj = new A("Санта Клаус");


?>

B@rmaley.e><e 22.11.2010 22:59

1. Конструктор лучше называть как __constructor, а не по имени класса.
Цитата:

Сообщение от Golovastik
return $this->s = $otdacha;

Конструктор класса, возвращающий значение другого типа... Не находите странным?

monolithed 22.11.2010 23:01

<?php
class Name {
	var $name; //свойство, но лучше использовать спецификатор public

	function Golovastik() { //метод
		echo "Учи язык";
	}
}

$object = new Name;
$object->name = "Golovastik";
echo $object->name.': '.$object->Golovastik();
?>


Но лучше так:
<?php
class Name {
	function __constructor($name){
		$this->name = $name;

	function Golovastik() {
		return $this->name;
	}
	private $name;
}

$object1 = new Name("Golovastik");
$object2 = new Name("Лентяй");

echo $object1->Golovastik().': '.$object2->Golovastik();
?>

Gozar 22.11.2010 23:23

удалено.

Golovastik 23.11.2010 00:17

Чего-то решил ваш код запустить, вот этот:
<?php
class Name {
	function __constructor($name){
		$this->name = $name;

	function Golovastik() {
		return $this->name;
	}
	private $name;
}

$object1 = new Name("Golovastik");
$object2 = new Name("Лентяй");

echo $object1->Golovastik().': '.$object2->Golovastik();
?>


Не сработал, ошибка на строке:
private $name;


И вот это слово драимвиер не выделяет кстати __constructor

B@rmaley.e><e 23.11.2010 00:45

А читать текст ошибки не пробовали? Советую попробовать - бывает очень полезно в программировании.

Gozar 23.11.2010 00:58

удалено.

Golovastik 23.11.2010 01:52

Оказывается слово конструктор не работает, нужно вот так.


<?php
class Name {
	function Name($name){
		$this->name = $name;
		}

	function Golovastik() {
		return $this->name;
	}
	private $name;
}

$object1 = new Name("Тест1");
$object2 = new Name("Тест2");

echo $object1->Golovastik().': '.$object2->Golovastik();

?>



Вот это не работает: __constructor

Gvozd 23.11.2010 07:52

отлично работает
надо только применить мозги, и заглянуть на 5 минут в документацию, а не тупо копипастить чужой код


Часовой пояс GMT +3, время: 00:44.