PHP 类 BaseClass

1.创建一个简单的类

<?php

class Example
{
	public $item = 'hello zxl';
	public $name;
	function Sample()
	{
		$this->Test();
	}
	function Test()
	{
		echo 'ok' . "<br />";
		echo $this->item;
		$regular = 100;
		echo $regular;
	}

}

$e = new Example();
$e->Sample();
?>

2.类-类型引用

<?php

//Type Hinting
class Test
{
	public function __construct()
	{
	
	}
	public function Write()
	{
		echo 'I am writing form test ' . "<br />";
	}
}

class Foo
{
	public function __construct(Test $a)
	{
		$this->NewObj = $a;
		$this->NewObj->Write();
	}
}

new Foo(new Test);

?>

3.类中的各种内置方法

pt1

<?php
//Magic Methods

class Test
{
	public $name;
	public function Hello()
	{
		echo 'hello';	
	}
	function __get($param)
	{
		echo "$param does not exist";
	}
	function __set($name, $value)
	{
		echo "you were going to set a property of $name - > $value";
		$this->{$name} = $value;
	}
	function __call($param, $value)
	{
		echo "you were going to process $param($value)";
		print_r($value);
	}
}

$test = new Test();
$test->Hello();
$test->nzzzame; //this is not in class goto "__get()"
$test->age=10; //this is not in class goto "__set()"
$test->Something('zzz','xxx','lll'); //this is not in class goto "__call()"


?>

pt2

<?php
//Magic Methods

class Test
{
	
	function __construct()
	{
		echo 'item created' . "<br />";	
	}
	function __destruct()
	{
		echo 'item erased' . "<br />";	
	}
	function __toString()
	{
		return 'this is tostring' . "<br />";	
	}
	function __clone()
	{
		echo '1' . "<br />";
	}
	
}

$test = new Test();
echo $test;
$test2 = clone $test;

?>
4.简单的文件读写类
Logger.php

<?php
//Logger
require_once('Log.class.php');

$log = new Log();
$log->Write('test.txt' , 'zzzzz');

//echo $log->Read('test.txt');


?>

Log.class.php

<?php
//Logger
class Log
{
private $_FileName;
private $_Data;
/**
*@desc writes to a file
*@param str $strFileName the name of the file
*@param str $strData data to be appended to the file
*/

	public function Write($strFileName , $strData) 
	{
		$this->_FileName = $strFileName;
		$this->_Data = $strData;

		$this->_CheckPermission();
		$this->_CheckData();

		$handle = fopen($strFileName, 'a+');
		fwrite($handle, $strData . "\r\n");
		fclose($handle);
	}
	public function Read($strFileName)
	{
		$this->_FileName = $strFileName;
		
		$this->_CheckExists();		

		$handle = fopen($strFileName , 'r');
		return file_get_contents($strFileName);
	}
	private function _CheckExists()
	{
		if(!file_exists($this->_FileName))
		die('the file does not exist ');
		
	}
	private function _CheckPermission()
	{
		//if(!is_writable($this->_FileName))
		//die('Change you chmod permissions to ' . $this->_FileName);
		
	}
	private function _CheckData()
	{
		if(strlen($this->_Data) < 1 )
		die('null ' . $this->_Data);
		
	}
}

?>

5.数组参数的运算类

<?php

//Decorator Pattern
class Player
{
	public $Data = array();
	
	public function __construct(array $info)
	{
		$this->Data = $info;
	}
}

abstract class Player_Decorate
{
	abstract public function Add($int);
}


class Player_Str_Decorate extends Player_Decorate
{
	public function __construct(Player $p)
	{
		$this->Player = $p;
		//$this->Player->Data['str'] +=5 ;
	}
	
	public function Add($int)
	{
		$this->Player->Data['str'] += $int;
	}
	
}

class Player_Dex_Decorate extends Player_Decorate
{
	public function __construct(Player $p)
	{
		$this->Player = $p;
		//$this->Player->Data['dex'] +=5 ;
	}
	
	public function Add($int)
	{
		$this->Player->Data['dex'] += $int;
	}
	
	
}

$P = new Player(array('str' => 10,'dex' => 15));
echo $P->Data['str'];
echo '<br />';
echo $P->Data['dex'];

echo '<hr />';

$Str = new Player_Str_Decorate($P);
$Str->Add(25);
echo $Str->Player->Data['str'];

echo '<br />';

$Dex = new Player_Dex_Decorate($P);
$Dex->Add(25);
echo $Dex->Player->Data['dex'];




?>

6.算数运算类

<?php
//Scop & Calculator
class Calc
{
	public $input;
	public $input2;
	private $output;

	function setInput($int)
	{
		$this->input = (int) $int;
	}
	function setInput2($int)
	{
		$this->input2 = (int) $int;
	}
	function calculate()
	{
		$this->output = $this->input * $this->input2;
	}
	function getResult()
	{
		return $this->output;
	}
	
}

$e = new Calc();
$e->setInput(5);
$e->setInput2(55);
$e->calculate();
echo $e->getResult();
?>

7.php类中链的方法

chain_Methods.php

<?php
//chain methods
require('cupcake.php');
$cupcake = new Cupcake();

$cupcake->Nuts('10')
		->Frosting('chocolate')
		->Sprinkles('200');

print_r($cupcake->Cupcake);

?>


cupcake.php

<?php
//chain methods
class Cupcake
{

	public $Cupcake = array();
	
	public function Frosting($str)
	{
		$this->Cupcake['Frosting'] = $str;
		return $this;
	}
	public function Nuts($int)
	{
		$this->Cupcake['Nuts'] = (int) $int;
		return $this;
	}
	public function Sprinkles($int)
	{
		$this->Cupcake['Sprinkles'] = (int) $int;
		return $this;
	}

}
?>







你可能感兴趣的:(PHP 类 BaseClass)