首页  >  文章  >  后端开发  >  php函数、类跟对象以及类的封装、继承、类的静态方法、静态属性

php函数、类跟对象以及类的封装、继承、类的静态方法、静态属性

WBOY
WBOY原创
2016-06-13 12:23:08940浏览

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

1、函数

    php内置函数可以直接使用,如果没有安装php扩展即可

    自定义函数

<span style="color: #008000">//</span><span style="color: #008000">函数function  函数名 </span>    <span style="color: #0000ff">function</span> dump(<span style="color: #800080">$var</span> = <span style="color: #0000ff">null</span>){    <span style="color: #008000">//</span><span style="color: #008000">支出默认参数值</span>        <span style="color: #0000ff">echo</span> ‘<pre class="brush:php;toolbar:false">
’; var_dump($var); }

2、类(class)和对象( new Obj)

<span style="color: #000000">php </span><span style="color: #008000">//</span><span style="color: #008000">定义一个人的类,现在还不是对象</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Person{ </span><span style="color: #008000">//</span><span style="color: #008000">私有属性 </span>
<span style="color: #008000">    </span><span style="color: #0000ff">private</span> <span style="color: #800080">$eye</span> = '大眼睛'<span style="color: #000000">;    </span><span style="color: #0000ff">private</span> <span style="color: #800080">$mouth</span> = '小嘴巴'<span style="color: #000000">;    </span><span style="color: #0000ff">private</span> <span style="color: #800080">$leg</span> = '大长腿'<span style="color: #000000">;                 </span><span style="color: #008000">//</span><span style="color: #008000">构造方法 new 对象的时候自定调用</span>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> __construct()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__CLASS__</span><span style="color: #000000">;    }        </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> run()    {        </span><span style="color: #0000ff">echo</span>  <span style="color: #800080">$this</span>-><span style="color: #000000">leg;    }     </span><span style="color: #008000">//</span><span style="color: #008000">学习 会用到 腿(走路)、眼睛(看书)、嘴(念书)</span>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> study()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>->leg, <span style="color: #800080">$this</span>->eye, <span style="color: #800080">$this</span>-><span style="color: #000000">mouth;    }                 }</span><span style="color: #008000">//</span><span style="color: #008000">使用类 new以后就变成了对象</span><span style="color: #800080">$person</span> = <span style="color: #0000ff">new</span> Person();          <span style="color: #008000">//</span><span style="color: #008000">输出 Person</span><span style="color: #800080">$person</span> -> run();                <span style="color: #008000">//</span><span style="color: #008000">输出  大长腿</span><span style="color: #800080">$person</span> -> study();             <span style="color: #008000">//</span><span style="color: #008000">输出  大长腿 大眼睛 小嘴唇</span>

3、类的封装(public, protected, private)和继承(extends)

<span style="color: #008000">//</span><span style="color: #008000">类的继承  </span><span style="color: #0000ff">class</span><span style="color: #000000"> A{    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> help()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }    </span><span style="color: #008000">//</span><span style="color: #008000">声明一个吃的方法 私有的</span>    <span style="color: #0000ff">private</span> <span style="color: #0000ff">function</span><span style="color: #000000"> eat()    {        </span><span style="color: #0000ff">echo</span>  <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }}</span><span style="color: #008000">//</span><span style="color: #008000">子类可以继承父类所有的公共方法和属性、受保护的方法和属性,私有方法除外//如果想使用,重写即可</span><span style="color: #0000ff">class</span> B <span style="color: #0000ff">extends</span><span style="color: #000000">  A{    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> doSomething()    {        </span><span style="color: #800080">$this</span> -> help();   <span style="color: #008000">//</span><span style="color: #008000">继承了父类的方法   前提是声明为public </span>        <span style="color: #0000ff">echo</span> '<hr>'<span style="color: #000000">;        </span><span style="color: #800080">$this</span> -> eat();    <span style="color: #008000">//</span><span style="color: #008000">因为吃是私有的,子类不能使用, 这里在子类中写了一个eat方法.</span><span style="color: #000000">    }    </span><span style="color: #008000">//</span><span style="color: #008000">子类的吃</span>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> eat()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }}</span><span style="color: #800080">$b</span> = <span style="color: #0000ff">new</span><span style="color: #000000"> B;</span><span style="color: #800080">$b</span>->doSomething();
//输出结果

A::help


B::eat

4、类的静态方法和静态属性

<span style="color: #000000">php</span><span style="color: #008000">//</span><span style="color: #008000">定义一个Url 相关的类</span><span style="color: #0000ff">class</span><span style="color: #000000"> Url{    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> createUrl(<span style="color: #800080">$arr</span> =<span style="color: #000000"> [])    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> redirect(<span style="color: #800080">$url</span> = ''<span style="color: #000000">)    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span><span style="color: #000000"> getCurrentUrl()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }}</span><span style="color: #008000">//</span><span style="color: #008000">把方法声明成静态方法,不需要每次都实例化(new)对象,操作方便,节省内存,效率更高</span><span style="color: #0000ff">echo</span>  Url::createUrl(<span style="color: #800080">$var</span>=''<span style="color: #000000">);</span><span style="color: #0000ff">echo</span>  Url::redirect(<span style="color: #800080">$url</span>=''<span style="color: #000000">);</span><span style="color: #0000ff">echo</span>  Url::getCurrentUrl();

5、类的静态属性

<span style="color: #000000">php</span><span style="color: #008000">//</span><span style="color: #008000">定义一个Url 相关的类</span><span style="color: #0000ff">class</span><span style="color: #000000"> Url{    </span><span style="color: #008000">//</span><span style="color: #008000">声明为类常量</span>    <span style="color: #0000ff">const</span> URL = 'http://www.baidu.com'; <span style="color: #008000">//</span><span style="color: #008000">从5.3以后可以直接在类外部使用 const    //声明为静态变量</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #800080">$var</span> = 'it is very good'<span style="color: #000000">;    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> createUrl(<span style="color: #800080">$arr</span> =<span style="color: #000000"> [])    {        </span><span style="color: #0000ff">echo</span> self::<span style="color: #000000">URL;        </span><span style="color: #0000ff">echo</span> '<br>'<span style="color: #000000">;        </span><span style="color: #0000ff">echo</span> self::<span style="color: #800080">$var</span><span style="color: #000000">;        </span><span style="color: #0000ff">echo</span> '<br>'<span style="color: #000000">;        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> redirect(<span style="color: #800080">$url</span> = ''<span style="color: #000000">)    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }    </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span><span style="color: #000000"> getCurrentUrl()    {        </span><span style="color: #0000ff">echo</span> <span style="color: #ff00ff">__METHOD__</span><span style="color: #000000">;    }}</span><span style="color: #008000">//</span><span style="color: #008000">把方法声明成静态方法,不需要每次都实例化(new)对象,操作方便,节省内存,效率更高</span><span style="color: #0000ff">echo</span>  Url::createUrl(<span style="color: #800080">$var</span>='');
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn