首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

php 魔术方法使用说明

一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!! PHP5.0后,php面向对象提成更多方法,使得php更加的强大!! 一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!! 1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。 Java代码 class Test { function __construct() { echo "before"; } } $t = new Test(); class Test { function __construct() { echo "before"; } } $t = new Test(); 输出是: start 我们知道php5对象模型 和类名相同的函数是类的构造函数,那么如果我们同时定义构造函数和__construct()方法的话,php5会默认调用构造函数而不会调用__construct()函数,所以__construct()作为类的默认的构造函数 2.__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。 Java代码 class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end 我们就可以在对象操作结束的时候进行释放资源之类的操作 3.__get() 当试图读取一个并不存在的属性的时候被调用。 如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。 Java代码 class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在 class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在 4.__set() 当试图向一个并不存在的属性写入值的时候被调用。 Java代码 class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo 5.__call() 当试图调用一个对象并不存在的方法时,调用该方法。 Java代码 class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go); class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go); 程序将会输出: Java代码 您要调用的 getName 方法不存在。参数是:Array ( [0] => aning [1] => go ) 您要调用的 getName 方法不存在。参数是:Array ( [0] => aning [1] => go ) 6.__toString() 当打印一个对象的时候被调用 这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数 class Test { public function __toString() { return "打印 Test"; } } $t = new Test(); echo $t; 运行ec

03

MVC模式中Controller控制器为什么是Servlet?怎么理解?

马克-to-win:动态网站项目开发中,当我们jsp表单一提交,应提交给谁呢?上一章,我们在讲jsp技术的时候,当时我们曾把jsp提交给另外一个jsp处理。这实际上是一个非常不好的实践,为什 么呢?因为Servlet的优势就是java代码好维护。换句话说,如果你要维护纯java代码的话,你应宁愿放在Servlet当中,也不愿放在jsp当中。因为jsp在能运行前,还需转成一个Servlet。所以当你编写jsp的时候,在eclipse当中,当你把光标放在一个变量上时,这个变量在文 件的其他地方,不会高亮。但当你编写Servlet时就不是这样了。马克-to-win:所以在实践当中,jsp一般我们提交给一个Servlet。 Servlet负责控制 (Controller[C])整个儿jsp(V[V]iew)表单提交后的流程。第一步,从request当中获取提交上来的数据。第二步调用bean (M [M]odel),让bean去处理这些数据,并返回结果。通常,复杂的业务处理过程需要和数据库打交道。第三步,处理返回的数据,比如放在 Session当中,之后做跳转。第二步通常非常复杂,代码量比较大。如果直接放在Servlet当中。Servlet会变得非常臃肿,不利于我们维护代 码。

03

Android Bitmap 内存溢出的问题

09-29 13:35:41.884: E/SQLiteLog(20098): (10) Failed to do file read, got: 0, amt: 100, last Errno: 2 09-29 13:35:46.857: E/dalvikvm-heap(20098): Out of memory on a 31360016-byte allocation. 09-29 13:35:46.862: E/AndroidRuntime(20098): FATAL EXCEPTION: main 09-29 13:35:46.862: E/AndroidRuntime(20098): Process: com.example.nongmin, PID: 20098 09-29 13:35:46.862: E/AndroidRuntime(20098): java.lang.OutOfMemoryError 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:616) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.loadDrawable(Resources.java:2235) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.content.res.Resources.getDrawable(Resources.java:722) 09-29 13:35:46.862: E/AndroidRuntime(20098): at com.jarvis.message.ChatMain.onCreate(ChatMain.java:121) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Activity.performCreate(Activity.java:5451) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2346) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2443) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread.access$800(ActivityThread.java:157) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 09-29 13:35:46.862: E/AndroidRuntime(20098): at android.os.Handler.dispatchMessage(H

03

你应该知道的Java垃圾收集器 - 串行、并行、CMS、G1

当我们谈论垃圾收集时,绝大多数人都知道这个概念,并在日常编程中使用它。即使如此,有关垃圾收集,我们很多人还是不太明白。关于JVM的一个最大的误解是它有一个垃圾收集器,其实它提供了四个不同的垃圾收集器,每一个都有自己独特的优点和缺点。重要的是,我们编程的时候可以通过JVM选择垃圾回收器类型。我们通过向JVM传递参数进行选择。每种类型在很大程度上有所不同并且可以为我们提供完全不同的应用程序性能。理解每种类型的垃圾回收器并且根据应用程序选择进行正确的选择是非常重要的。 这四种垃圾收集算法的共同点是,它们都是分

08
领券