class MyClass
{
public $x;
public $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function sumXY()
{
$sum = $this->x + $this->y;
return $sum;
}
public function SquaringTheSum()
{
$sq = sumXY()*sumXY();
return $sq;
}
}
$pairXY = new MyClass(2,3);
echo $pairXY->sumXY();
echo '<br>';
echo $pairXY->SquaringTheSum();
в этом случае методу SquaringTheSum() невдомёк что за функция sumXY()
можно ли "подружить" их в одном классе?
Спустя 1 минута, 14 секунд (23.07.2011 - 21:57) svolota написал(а):
class MyClass
{
public $x;
public $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function sumXY()
{
$sum = $this->x + $this->y;
return $sum;
}
}
class BranchMyClass extends MyClass
{
public function __construct($x,$y)
{
parent::__construct($x,$y);
}
public function SquaringTheSum()
{
$sq = parent::sumXY()*parent::sumXY();
return $sq;
}
}
$pairXY = new BranchMyClass(2,3);
echo $pairXY->sumXY();
echo '<br>';
echo $pairXY->SquaringTheSum();
и можно ли так делать, если нельхяподружить в одном классе?
Спустя 8 минут, 50 секунд (23.07.2011 - 22:06) denash написал(а):
Весь мир обычно помнит, что к методам в классе нужно обращатся так:
$this->method(); // Это самый популярный вариант
но можно и так:
self::method();
$this->method(); // Это самый популярный вариант
но можно и так:
self::method();
Спустя 6 минут, 53 секунды (23.07.2011 - 22:13) denash написал(а):
Чтобы посчитать произведение, вам напрямую не нужно обращаться к этому методу $pairXY->sumXY(); можно его даже как private поставить
Спустя 1 минута, 54 секунды (23.07.2011 - 22:15) svolota написал(а):
Спасибо, видимо невнимательно читал теорию. А может подскажите ещё как из одного класса(класс1) у которого есть паблик функции возвращающие протектед свойства передать эти самые свойства другому классу(класс2)?
Спустя 2 минуты, 41 секунда (23.07.2011 - 22:17) denash написал(а):
Цитата (svolota @ 23.07.2011 - 19:15) |
Спасибо, видимо невнимательно читал теорию. А может подскажите ещё как из одного класса(класс1) у которого есть паблик функции возвращающие протектед свойства передать эти самые свойства другому классу(класс2)? |
Привидите пример кода, что вы хотите именно сделать.
Спустя 5 минут, 1 секунда (23.07.2011 - 22:22) svolota написал(а):
class MyClass1
{
private $x;
private $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
}
class MyClass2
{
private $a;
private $b;
public function __construct ($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function addingCoeff()
{
/*и вот тут как то добавить из MyClass1 x и y чтобы вышло
$summary = $a*$x+$b*$y;
return $summary;*/
}
}
Спустя 11 минут, 23 секунды (23.07.2011 - 22:34) denash написал(а):
class MyClass1
{
private $x;
private $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
}
class MyClass2
{
private $a;
private $b;
public function __construct ($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function addingCoeff()
{
Global $x,$y;
$summary = $this->a*$x+$this->b*$y;
return $summary;
}
}
$obj1=new MyClass1(4,5);
$obj2=new MyClass2(2,3);
$x=$obj1->getX();
$y=$obj1->getY();
Echo $obj2-> addingCoeff(); // Должно 23 по идее вывести
Ну вот первое, что на ум приходит.
Если свойства класса нам необходимо использовать за пределами класса, то его лучше как private не оформлять
Спустя 8 минут, 16 секунд (23.07.2011 - 22:42) denash написал(а):
Тут можно и так поступить:
class MyClass1
{
private $x;
private $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
}
class MyClass2
{
private $a;
private $b;
public function __construct ($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function addingCoeff(MyClass1 $obj)
{
$summary = $this->a*$obj->getX()+$this->b*$obj->getY();
return $summary;
}
}
$obj1=new MyClass1(4,5);
$obj2=new MyClass2(2,3);
Echo $obj2-> addingCoeff($obj1);
Спустя 3 часа, 51 минута, 11 секунд (24.07.2011 - 02:33) svolota написал(а):
Спасибо большое!