博客列表 >文件加载和对象基础学习心得

文件加载和对象基础学习心得

越努力越幸运
越努力越幸运原创
2020年04月28日 16:23:01534浏览

<?php

//demo01


    //加载用户的自定义模板:include:本质:是一个语言结构,不是函数!!!但支持函数方式:如第四行;

    //以下的方式都ok!而且文件加载失败,并不影响文件继续执行

    include 'templet.html';

    include('templet.html');

    $file="templet.html";

    include $file;

    include "$file";

    

    //用表达式也行:

    $aaa="templet";

    include $aaa.'.html';

    

    //以下实例很好:1.可以用:!include ''   来判断是不是未加载;

    //            2.可以用:@  抑止符来阻止报错;

    if(@!include 'templet1.html'){

     include 'default.html';

     echo '如果看到我,说明程序没有因文件加载失败而终止;';

    }


    //还可以用以下方式来判断:

    if(file_exists($file)&& is_file($file)){

     include $file;

    }else {

     include 'default.html';

    }



//demo02


    //include_once():仅允许加载一次;

    //全局成员:函数,常量,类,接口;

    //不支持函数重载:函数重载:如果两个函数,名字一样,参数不一样,也不行,不支持;

    

    //举例:见:common.php

    //include_once():加载前会检查该文件是否已经加载过了,去重检查

    include_once 'common.php';

    include_once 'common.php';

    

    echo fetch();

    

//demo03

    //require:强制加载:如果没有实现,会报错!并且,下面的代码也不会被执行;

    

    /*

    require 'config.php';

    require 'config1.php';//如果没有实现,会报错!并且,下面的代码也不会被执行;

    require 'config.php';//重名也报错,并且下面代码不会执行;

    */

    

    require_once 'config.php';

    require_once 'config.php';//注意:这样写没问题,不报错,下面代码也执行!!!

    

    //require_once:强制去重加载;

    

    echo '下面代码有没有执行呢?<br>';

    

    


//demo04文件加载和作用域:同一作用域下,文件外部变量可以在文件内使用;


    $bbb='php中文网';

    include 'file1.php';//有意思的是:这里运行时,$bbb有值,而下面函数中include时就没有值;

    

    echo '<hr>';

    

    //函数作用域

    function test2(){

     //global $bbb;所以,要将这一行代码放进来,就能找到$bbb了!!!!!!!

     include 'file1.php';//有意思的是:这里运行时,$bbb没有值;原因:在函数中,不认识程序外部的全局变量,所以不认识;

     //

     echo $email;

    }


    test2();

    

    echo '<hr>';

    

    function test3(){

     include 'file2.php';

     echo $goods;

    }


    test3();

    echo '<hr>';


//demo06

    //类的声明与实例化

    class Goods{

    

    }

    

    $goods=new Goods();

    

    //函数:判断一个对象是不是一个类的实例:instanceof:

    var_dump($goods instanceof Goods);

    

    echo '<hr>';


    echo get_class($goods);

    echo '<br>';

    

    //支持类名赋值给变量----动态类;

    $class='Goods';

    $obj=new $class();

    

    var_dump($obj instanceof Goods);

    echo '<br>';

    

    //类名是需要大写的,如果拿到的字符串是小写,可以用函数ucfirst()将它变为合法的类名;

    

    $class=ucfirst('goods');

    

    

//demo07

    class User{

     //类中成员的作用域:

     //常规属性:其中:非法属性有:

     /*

     * 1.不能以变量来赋值:例:public $age=$aa;

     * 2.不能以其他类属性来赋值:例:public $user=$this->name;

     * 3.不能以表达式来赋值:例:public $total=$price*9;

     * 4.不能以函数来赋值:例:public $createtime=time();

     * */

     public $name='胡八一';

     public $age=40;

     public $option=[1,2,3];

     public $output=<<<'RES'

     <h3>中国必胜</h3>

RES;

     public $emael='peter@php.cn';

    

     //静态属性:

     public static $nationality='中国/CHINA';

    

     //抽象属性:(没有被初始化,默认值是null)

     public $salary;

     //注意;抽象属性只能这样赋值;如果:

     //public $salary=null;这样是不行的!这就不再是抽象属性了;

    

    }


    $user=new User;

    echo "姓名:{$user->name},年龄:{$user->age}<br>";

    

    echo $user->output.'<br>';

    

    //问题:heredoc中,可以解析变量,当类属性是一个heredoc时,heredoc中的变量会不会被解析呢?

    //回答:不会!!!因为类属性不允许是变量,和heredoc冲突时,按照类属性的要求来!!!

    

    //访问静态属性:使用范围解析符,双冒号::;

    echo User::$nationality;

    echo '<br>';


    $user->name='王胖子';

    echo $user->name;

    echo '<br>';

    

    User::$nationality='中国/CHINA!YE!';

    

    echo User::$nationality;

    echo '<br>';


    var_dump($user->salary);

    echo '<br>';

    

    var_dump(is_null($user->salary));

    echo '<br>';

    

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议