zoukankan      html  css  js  c++  java
  • php面向对象精要(3)

    1,final关键字定义的方法,不能被重写

    由于final修饰了show方法,子类中重写show方法会报错

    <?php
    
        class MyClass {
            final function show(){
                echo "hello world" . PHP_EOL;
            }
        }
    
        class MyTest extends MyClass {
            function show(){
                echo __CLASS__ . PHP_EOL;
            }
        }
        
    ?>

     2,final定义的class不能被继承

    <?php
    
        final class MyClass {
            function show(){
                echo "hello world" . PHP_EOL;
            }
        }
    
        class MyTest extends MyClass {
        }
        
    ?>

    3,__toString方法

    如果定义了__toString方法,打印一个对象时,将调用__toString

    class Person {
        private $name;
        function __construct( $name ){
            $this->name = $name;
        }
        function __toString(){
            return $this->name;
        }
    }
    
    $p = new Person( "ghostwu" );
    var_dump( $p );
    echo PHP_EOL;
    print $p . PHP_EOL;

    4, 异常处理( try, catch, throw )

    >异常处理类都应该继承自系统自带的Exception

    >异常抛出时( throw 异常对象 ),会一个个查找catch后面的异常处理,如果匹配到,就执行,后面的catch就算能匹配,也不会执行

    Exception类摘要:

    Exception {
    /* 属性 */
    protected string $message ;
    protected int $code ;
    protected string $file ;
    protected int $line ;
    /* 方法 */
    public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
    final public string getMessage ( void )
    final public Throwable getPrevious ( void )
    final public int getCode ( void )
    final public string getFile ( void )
    final public int getLine ( void )
    final public array getTrace ( void )
    final public string getTraceAsString ( void )
    public string __toString ( void )
    final private void __clone ( void )
    }
     1 class NullHandleException extends Exception { 
     2     function __construct( $message ){
     3         parent::__construct( $message );
     4     }
     5 }
     6 
     7 function printObj( $obj ){
     8     if( $obj == NULL ) {
     9         throw new NullHandleException( "printObj接收到一个null对象" );
    10     }    
    11     print $obj . PHP_EOL;
    12 }
    13 
    14 class Person {
    15     private $name;
    16     function __construct( $name ) {
    17         $this->name = $name;
    18     }
    19     function __toString() {
    20         return $this->name;
    21     }
    22 }
    23 
    24 try {
    25     printObj( new Person( "ghostwu" ) );
    26     printObj( null );
    27     printObj( new Person( "zhangsan" ) );
    28 }catch( NullHandleException $exception ){
    29     print $exception->getMessage() . PHP_EOL;
    30     print "in file:" . $exception->getFile() . PHP_EOL;
    31     print "in line:" . $exception->getLine() . PHP_EOL;
    32 }catch( Exception $exception ){
    33     echo "这个异常分支不会被执行" . PHP_EOL;
    34     print $exception->getMessage() . PHP_EOL;
    35 }
    36 
    37 echo "try...catch处理完毕" . PHP_EOL;

    输出结果:

    ghostwu@ubuntu:~/php_study/php5/03$ php -f exception_usage.php 
    ghostwu
    printObj接收到一个null对象
    in file:/home/ghostwu/php_study/php5/03/exception_usage.php
    in line:10
    try...catch处理完毕

    没有输出"zhangsan", 因为printObj( null );抛出了异常,因此"zhangsan"被忽略

     5,__autoload自动加载文件

    在项目开发中,经常需要在一个文件中包含多个通用的库文件,这个时候会产生一大堆的require或者include,而使用__autoload函数可以简化函数的加载过程

    1,MyClass.php

    1 class MyClass {
    2     function printHelloWorld(){
    3         echo "Hello World" . PHP_EOL;
    4     }
    5 }

    2,common.inc

    function __autoload( $className ) {
            require_once( "./{$className}.php" );
        }

    3,main.php

    require_once "common.inc";
        
        $obj = new MyClass();    
        $obj->printHelloWorld();
  • 相关阅读:
    SpringBoot条件注解@Conditional
    IDEA远程Debug
    聊一聊Java如何接入招行一网通支付功能
    IDEA中使用lombok插件
    使用Java类加载SpringBoot、SpringCloud配置文件
    Java项目启动时执行指定方法的几种方式
    Java定时任务解决方案
    04 Python并发编程(守护进程,进程锁,进程队列)
    03 初识并发编程
    02 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8458812.html
Copyright © 2011-2022 走看看