72 lines
1.2 KiB
PHP
72 lines
1.2 KiB
PHP
class Point
|
|
{
|
|
protected $_x;
|
|
|
|
protected $_y;
|
|
|
|
public function __construct()
|
|
{
|
|
switch( func_num_args() )
|
|
{
|
|
case 1:
|
|
$point = func_get_arg( 0 );
|
|
$this->setFromPoint( $point );
|
|
break;
|
|
case 2:
|
|
$x = func_get_arg( 0 );
|
|
$y = func_get_arg( 1 );
|
|
$this->setX( $x );
|
|
$this->setY( $y );
|
|
break;
|
|
default:
|
|
throw new InvalidArgumentException( 'expecting one (Point) argument or two (numeric x and y) arguments' );
|
|
}
|
|
}
|
|
|
|
public function setFromPoint( Point $point )
|
|
{
|
|
$this->setX( $point->getX() );
|
|
$this->setY( $point->getY() );
|
|
}
|
|
|
|
public function getX()
|
|
{
|
|
return $this->_x;
|
|
}
|
|
|
|
public function setX( $x )
|
|
{
|
|
if( !is_numeric( $x ) )
|
|
{
|
|
throw new InvalidArgumentException( 'expecting numeric value' );
|
|
}
|
|
|
|
$this->_x = (float) $x;
|
|
}
|
|
|
|
public function getY()
|
|
{
|
|
return $this->_y;
|
|
}
|
|
|
|
public function setY( $y )
|
|
{
|
|
if( !is_numeric( $y ) )
|
|
{
|
|
throw new InvalidArgumentException( 'expecting numeric value' );
|
|
}
|
|
|
|
$this->_y = (float) $y;
|
|
}
|
|
|
|
public function output()
|
|
{
|
|
echo $this->__toString();
|
|
}
|
|
|
|
public function __toString()
|
|
{
|
|
return 'Point [x:' . $this->_x . ',y:' . $this->_y . ']';
|
|
}
|
|
}
|