最近在学习php的过程中发现它其实比java的语言要松散很多,而且很多人说上手比较容易,但是智言我个人并不是很认同这样的观点,因为其实java的整个语法规则都非常的有条有理,虽然函数很多,但是至少经常用到的也就是那么一些,而在php中虽然函数比不上java,但是整个php的语法感觉比java要松散而混乱,所以相比来说,我认为java比php要好学一些。当然,这也有可能是我先学习了java然后再去学php的原因。
首先说说php中的三大特征,三大特征和java中是一样的,分为封装、继承、多态,同样还有另外一个学习点,就比如覆盖和重写。
覆盖和重写和java中是一样的,我这里就不多讲。
那么先讲讲封装
封装
php中的封装可以说也是和java中的封装是差不多的,只是,在php中又另外提供了一个魔术函数 __set 和 __get方法,而设计者本身也不推荐使用,我个人也还是喜欢像java中的封装,毕竟已经非常熟练了。
<?php private $name; private $age; public function setName($name){ $this->name = $name; } public function getName(){ return $this->name; } public function setAge($age){ $this->age = $age; } public function getAge(){ return $this->age; } ?>
然后大家就可以通过提供的公共方法来调用和赋值了。
而魔术函数 __set 和 __get方法由于创建者都不推荐,所以这里就不多说,有兴趣的朋友可以在百度里进行自行搜索,谢谢。
继承
对于继承而言其实和java中的也是差不多的。
如下:
<?php class A{ public function method(){ echo '我是方法A'; } } class B extends A{ public function methodTwo(){ echo '我是方法B'; } } $b = new B(); $b->method(); $b->methodTwo(); ?>
继承需要注意几点:
- 子类最多只能继承一个父类(指直接继承);
- 子类可以继承其父类(或者超类)的public、protected修饰的变量(属性)和函数(方法);
- 在创建某个子类对象时,默认情况下会自动调用其父类的构造函数。
- 如果在子类中需要访问其父类的方法(构造方法/成员方法 方法的访问修饰符是public/protected),可以使用父类::方法名(或者parent::方法名)来完成。
- 如果子类(派生类)中的方法和父类(基类)方法相同,我们称为方法重写/方法覆盖。
当然了,因为目前更新版本的问题,我所学的版本是5.3的版本,所以在最新的版本中智言还没有去研究,所以还会继续去看看研究的。
多态
至于多态,那就基本上和java中是不一样的啦,因为在java中,多态是这样写的。
class ZhiYan{ void method(){ System.out.println("我是方法一"); } void method(int a){ System.out.println("我是方法二"); } void method(int a,int b){ System.out.println("我是方法三"); } } ZhiYan zhiyan = new ZhiYan(); zhiyan.method(); zhiyan.method(5);
那么在java中会根据你传递的参数在自动选择需要匹配的方法,而在php中是不支持这样的方法,不知道php7中会不会有所改动…
php中依然要用到魔术方法 __call ,那么是这样写的:
<?php class Reload{ public function test1($a){ echo "test1.."; } public function test2($a,$b){ echo "text2---".$a.$b; } //这里提供一个魔术函数 __call public function __call($method,$a){ if($method=="test"){ if(count($a)==1){ $this->test1($a); }else if(count($a)==2){ $this->test2($a); } }else{ echo '没有匹配到你需要的方法'; } } } $load = new Reload(); $load->test(1); ?>
所以在学习php过程中,如果你没有编程基础,我想会更容易上手吧,至少不会混乱,而如果学习过其他语言,你的优势更多的将是你上手会很快,而你学到后面,有时候总结不到位,会学的混乱一些。
评论前必须登录!
注册