00:00
好,我们继续来上课,这节课呢,我们再来看一下文件的包含啊,文件的包含,那么文件包含第一个in录的啊,它干嘛呢?你看它的作用就是相当于将文件的内容复制到这个执行的文件当中啊,一般常用于这什么什么这些包含,那这些我们先不管它啊,我们就先看这个包含到底什么意思,比如说呀,我们在这里边。比如说我们在写项目时,经常会去定义这么一个文件啊,比如在这里边我们新建一个文件,比如说叫做23,叫什么呢?叫FUNC杠、lo。Global在PP啊,或者叫harp.pp都可以啊,He he。Help help啊,PP都可以,那么这就是一个什么呢?一个公共的函数库文件。公共的。函数库文件啊,那大家要想啊,你比如说我们在做项目的时候,可能我们需要一些函数,对吧,需要一些函数呢,但是呢,这些函数啊,并不是系统能提供的,那是什么办?是不是需要自己去写呀,对不对,哎,自己去封装,那么在封装的时候,比如说这里边我们去封装啊,比如说我就提定义。
01:03
比如说我来定义小猫叫的。功能定义。小狗教的功能,因为系统函数我在这个页面里面是不是可以直接用,但是我们定义的是不是只能在当前页面用,在其他页面是不是就没办法用啊,哎,所以在这个文件里边,我把所有函数都定到这一个文件里面来了啊,这个定义,比如说定义这个谁定义建奎叫的功能好了,比如给这三个啊小猫叫的哎,FUC叫做cat。开的小猫怎么叫的,是不是艾一个叫什么喵喵,诶好了,小猫叫的功能有了对吧,那同样这里边我们给它一个BR。啊,换行,然后同样。定义小狗叫的功能啊v ion叫做do。然后这里面我再来艾口一个小狗怎么叫的?汪汪。然后再来一个BR对吧,然后再来呢,定义键垂教的功能f nc function叫做。
02:04
建奎啊,建奎怎么叫呢?来,我们马上也要学时间函数了,教给大家时间函数的一个参数,叫做什么亚麻贼啊,亚麻雷啊,好了。就是见回叫的功能,OK,那么现在这个函数文件我是不是定义好了,也就说这里边我定义的所有都是什么,都是我们的函数对不对?那这些函数定义我在当前去,比如说调用键回教的功能,我在当前页面去调用,可不可以没问题吧?比如在这里面我们再来访问一下第23这个文件。亚麻得是不是有了,哎,没问题了啊,但是但是什么,但是在这里边,比如说我再来一个啊。新建一个。PP文件,比如叫做24啊use-FUC使用函数对吧,那在这里边我要干嘛,使用函数,那使用函数我第一个我需要什么呢?比如在这里边咱们就相当于先写项目,那写项目我现在就需要需要什么,需要建回教的功能。那怎么办?我这里面能直接调用见回教吗?当我调用键回教的时候,这个时候你来看。
03:06
干什么呀?调用call to UN fund的function式建奎对吧?也就是说你调用了未定义的这个函数建奎吧,哎,所以在这里边不行,那不行怎么办?我是不是还得再写一遍function来个建魁括号,然后这里边我再来个还一个叫做is。Is day爽好。那比如说写的这么一个一句话啊,这是这个页面了,跟上一面是不是区分了,哎,那你看在这里边这个再刷新诶可以了,那你想一想啊,那我这个页面需要了,那比如说我还有页面呢,我还需要建回教的功能,那我上这个页面再去盯一下,那这样的话是不是就是。影响到了我们函数的意义了,咱们这个函数的意义是什么?是不是尽量会把那些重用性的,就是复用的那种代码都给它封装成一个功能,对不对?哎,把那种复数的功能都给它封装成一个函数,下次我只需要调用就可以了,对不对?哎,减少什么,减少代码的耦合吧。
04:00
对不对,哎,所以在这里边。我们直接去这么去定义,那肯定什么肯定是不行的,因为我们已经定义好了,而系统函数呢,是在我任何页面中都用的,对吧?只有我们定义的这种自定义函数,那么在页面中是没办法使用的,所以我要想使用这个页面的函数,那怎么办呢?我在这里边可以通过一个函数叫什么呢?包含啊,叫文件的包含。文件的包含啊干嘛呢?Incd in录的包含包含什呢?包含当前目录23方格,哎,这个什么作用就是。相当于相当于将将什么呀,将这个文件将23。这个文件啊,文件中的所有内容复制过来一样。啊,复制过来一样,也就是说当我司一使用银可就把它干嘛进行复制了,对吧,同样它也会有返回值,也会有返回值啊,然后这里边我们来打印,在它的第四行,我们打印它的返回值,打印Dollar了,绕。
05:03
到了R。好,打这个result,那我们来看这个时候它会出现什么结果来走你诶报错了,报什么错呢?他说不能再重复定义这个建奎了,对不对,因为什么?因为这个键奎是不是已经被定义过了,对不对,函数咱们是不能出名,我我这里面是不是就不能定义它了,那我给它注释掉了啊注释掉以后现在再来看周诶是不是告诉我。返回结果第四行返回结果什么一代表什么?包含成功了,看懂了吗?哎,包含成功了,返回一个一,然后键回是不是也输出了,那这里边能调用键回了,我还能调用谁了?比如说这个猫cat叫的功能。开的叫,还有我们的dog来这几个都让它叫一下走,你你看是不是都有了,看到了吗?哎,也就是说干嘛呢,我可以使用英可录的将它进行什么进行包含啊,那么英格录的在包含的时候有一个问题啊,什么问题呢?你看啊,比如现在我包含一次没问题,肯定所以我再包含一次。再不好一次来这个数。找你报错,报什么错呀,他说我猫重复定义了对不对,因为我说了就相当于只要我们录了它,就相当于把这里的文件复制过来了,那我又一次是不是把这文件又复制过来一份。
06:11
对不对,所以我们才才会看到看到报错了,因为这个文件是跟别的文件不一样,这个文件什么是函数库文件,函数库我们定义的函数是不是不能重名啊,对不对,所以一般包含过来是不是都是重名了,所以他报错了,那OK,我把它注释掉啊,注意掉以后,现在再来看刷新是不是就没问题啊,那比如说。我们之前写的项目啊,咱们来看我们项目页面,还记得我们要把它头中文分开吧,比如这里边我们来一个叫什么呢?叫做这个呃,配置。在配置这里边,我们新建一个呃,PP文件啊,比如说叫做什么呢?叫做fo fo行foot啊有个foot,然后再来新建一个。我不一定将P捐给H2的吧,来H这是头部对吧,然后再来一个是不是还有主体内容啊,主体内容呢,比如说我叫做body。
07:02
那现在咱们来看。我是不是有这些。对吧,有了这些以后呢,这个时候啊,呃,行啊,我在这个负载PP里边,我去写一下代码,这是没问题的,对吧,把我们现在不认识的都给它删掉啊删掉完以后,这里边我们写叫做什么呢?叫做写个批标签吧,啊叫这是叫我是。底部对吧,然后在hi里面呢,同样我们再来个标签啊,He标签叫我是头部对吧,那在PP里面我是不是要引入这些文件,PP这个包的PPT是不是就相当于什么,相当于我这个页面的。主体了对吧,那在这里边监控号问号PP我干嘛呢?引入头部文件呗。引入头部文件,然后再来引入。底部文件对吧,中间我来艾一个什么,我也来个艾O个H1,比如说中间我就用一个H1标签就行了啊,叫做我是网页主体内容。
08:06
不是主题,是主体吧,哎,主体内容好了,那怎么去引入头部,我是不是就直接Dollar re result来看一下啊,它有反馈结果对吧?Dollar result等于什么incd in刻录的包含谁呢?包含当前目录叫做had htl这个文件对吧?诶,这我不光能包含PP的,HTL的我也可以包含对吧?它可以包含任何文件啊,然后再来。糟了。INC led in刻录的,它还有另外一种格式是直接写这种格式啊,这直接一下包含的,包含foot foot PB啊,那好了,那这个时候我们来看啊,我就以这个头部文件为例了,来打印。白鞋呢,打印这个。到了好这个时候我们来看啊。不是这个页面了吧,我在新建啊,CTRLC我在里面先打开一个,打开以后我们LESSON12里边的page p机对吧,这里边的谁呀,是不是访问这个包呀。哎,你看我是头部,还有我是。
09:00
主体是不是都有了,哎,你看我是头部,然后这块给个一,是在包的第四行给个一对吧,然后呢,我是网页的主体内容,网页主体内容是不是这句啊,包第四行是不是打印出一个一对吧,头部是也包含了,那这是一个普通的H文件,那现在我让他包含一次,他给我打一个一,好了,我再包含一次,来CTRLC再包含一次。走你是不是又一个一对吧,但是这里面会有一个问题,什么问题呢?你看好了弹性源代码。来,我先包含一次啊。我先包含一次,包含一次,这是不是正常的一个页面的头中尾啊,对吧,但是呢,这回再来看啊,我把它先关掉,关掉以后我们再来刷新页面代码。来刷新卡特页面,你看啊,这个页面就会很乱,怎么很乱呢?你看A面开始对吧,然后这里面又A码,这里面又A面开始看到了吗?这不是很乱的,哎,所以对应的我最终这几个页面组成的时候,是不是要组成一个页面,也就是he这里边我不需要要你不需要底部。对不对,在包的里边呢,包的里边没有没有事儿,在负的里边呢,我是不是就不需要头部了。
10:00
对吧?注里面不需要头部,但是我需要什么呢?诶错了啊,这是还了foot哪去这的foot foot里边我需要什么,我是不是只需要底部啊,所以上面的内容我是不是都不需要,诶给它删掉好了,那这个时候我们再来看,再返回来刷新一下页面是没有问题的,对吧?但是这里面右键还看右面代码,你看这是不是才是正常的。看到了吧,这是不是才是一个完整的页面啊,对不对,中间这块内容什么是由我用PPT打印的,因为PPT的debug啊,这个挖棒棒,它是配合的这样的一个语法,所以打印出才看到这样的结果啊,那好了,那现在咱们来看我的页面是不是正常了,那页面正常了,不管怎么样在包在这里边,对于这种文件,你看我是不是CTRLC,我包含一次来。是不是给我加载一次,告诉我一个一对吧,我再包含一次,他是不是又给我加载一次,又给我拿个一,没错吧。哎,那这种情况下,我对于包含这种普通文件没问题,它不会报错,但是我要包含函数库文件是不是就报错,你像刚才在这里边。我包含了这个函数库文件,来你看。
11:02
重复包含是不是开始给我报错了,那有没有一种方法,就是我判断一下,就是你有没有包含,如果你没有包含,我再包含,如果你已经包含了,我就不再包含了呢?对不对,那这个时候我们可以干嘛呢?我们可以把它注释的看好了,我用另外一个方法叫什么呢?叫做include include-onc includede one,哎,它也一样,也跟includede是一样,也有两种格式啊,你可以直接写的函数格式,或者是使用什么,使用它的指令格式都可以啊,指令格式就是这么写的,Includede-once,后面直接给地址,这两种格式都可以啊,我先用函数方式吧,来。包含什么呀?R13FUNCTION的PB对吧,那这个时候你看,当我包含一次,他给我返回一个结果,来VDOP打印,谁打印到了,Re,这个结果好了,那这个时候我们来看刷新,诶不会报错,返回一个一是不是都正常的,那好了,那当我再包含一次呢,来CTRLCCTRL位再包含一次的时候,这个时候再来看。你看没报错对吧,但是他告诉什么呀,告我布尔值的true什么意思,就他在帮我再次包含时,他已经帮我判断了怎么样,就是你已经包含过这个文件了,那么当在使用它的时候,它就不会再包含了,明白吧,无论你用它也好,还是用别的也好,比如说在这块我把这两个都注释掉啊,注释掉以后,现在咱们来看我用什么用英刻录的,我给它包含一次。
12:20
好,用in录包含,包含成功以后是不是一样,它给我返回一个一对不对,那在12行返回一好了,那这个时候我再包含的时候,比如到了re rt等于in CI in include的one包含谁呢?当前目录23,哎,我再包含一次,当我用它包含完以后,我打印结果,打印到了,你再看它的结果。总理是不是也返回是数对吧?哎,也就是说他在每次包含的时候,是不是会干嘛会帮我们做判断,是否已经包含过。该文件了,对不对,哎,该文件这是包含PP文件,那么一样在这个包的里边,比如说我想包含什么,包含这个A文件,它也是这么回事,你看好了,比如说糟了。
13:04
R等于什么呢?等于in。杠万方含谁呢?当前目录hi.h码对吧,然后呢,VR-DP我们来打印。打印谁打印这个R,现在你来看返回这里边刷新,诶一次没问题对吧,那当我再包含一次的时候,CTRLCCTRLV。走你,你看是不尔知数,这就不再帮我包含了。你看不管我包含多少次,是不是都给我返回一个处不再包含了,对不对,哎。这就是咱们in科跟in科的one,那你说在平时使用的时候使用谁呀。诶,大家可能认为因为麦会好一些,对吧,他会帮帮我们干嘛,自动做判断,但是大家记住啊,我们之前讲过啊,你想想,我给你举个例子,你有一个傻朋友,有一个奸朋友,你是愿意跟你聪明的这个朋友玩,还是愿意跟你这个傻朋友玩呢?对吧?肯定是为什么愿意跟傻朋友一起玩,为什么?因为他很实在,他不会去骗你,对吧?而聪明的朋友他会去考虑。
14:01
没错吧,哎,那他俩就一样,比如说英格路的就是什么,就是一个傻子,而英格鲁曼斯呢,是一个冲突的人,对吧,你让英格路的包S,他就是干嘛,就去给你包含去,而他你让他去包含,他就干嘛,他就开始去判断一次,所以它是不是效率又低,因为它的功能。强大是不是效率就会低下,对不对,哎,所以在用的时候我们建议使用,使用什么呢?使用英刻录的啊,那咱们来看一下在这里边。公录包含文件对吧?咱说了作用就是相当于将文件的内容复制到执行的文件当中。那么常用于。与。常用于啊,不是于常用于包含数据库或者配置文件等啊,但是任何PP文件都可以包含对吧?包括H啊,然后呢,它的单次文件的包含一样,它的作用相当于将文件的这个内容复制到指定文件当中,如果文件已经包含过,不再包含法回什么法律处对不对?那么英格路跟英格曼S什么区别?英格路的文件包含文件可以包含N次,而英格万不只能包含一次,那么英格路的效率高于格鲁万,为什么?因为它需要判断对不对,然后英格路的包含文件成功返回什么数值整就一,但是它第一次包含在返回一以后,包含相同文件是不是返回的数啊?
15:10
哎,这是他们两个的区别啊,这是他们两个区别,好了,那这个看完以后,我们再来看下一组叫什么呢?叫做require啊,Require什么意思,请求需要对吧?哎,请求你过来,需要你过来,这个意思啊,它的作用一样,和因刻录的几乎相同,也是将一个文件,它怎么是请求到另一个文件当中啊,请求到另一个文件当中,那么咱们来看一下,在这里边用法都是一样的,我在这个。24这里边啊,把这几个都注释掉了,我们再来看什么呢?看require了,来这里边我们再去使用require包含。一样,Require也支持两种格式,一种是函数格式,一种是指令格式啊,Re。Require,请求文件来,你看好了,I qqu IE括号报含谁呢?当前目录23,好了,我请求你过来对吧?然后一样它会返回一个结果。
16:03
到了re re就re吧,啊好了,那这个时候我们来VR跟DP打印这个re,到了re,你看这个时候我们再来刷新页面,这里边刷新页面诶没问题,成功了对吧,当我再次包含呢,再次使用块,再次请求的时候,这个时候你来看啊。才再来刷新,是不是报错了,哎,报有什么错呀,是不是重复定义了函数又重复定义了吧,也就是说它跟英刻录的是不是一样的,你让我去请求一次,我是不是就请求一次对不对?那好了,你看我们在这个页面,在body的PPT页面里面做实验啊,比如说把它注释掉了。注释掉,注释掉以后我们上这里面来。来吧,比如说这里面当了I等于什么呢?等于reqqu require包含谁呢?包含当前目录,还这回我用指令格式写了啊,那VR-DP打印打印这个。到了re啊,这两种格式没有要求你愿意用哪种用哪种啊好了,打印IE以后,这个时候我们来看返回它刷新,诶头部一次搞定对吧,当我再次包含的时候,来CTRLCCTRLV。
17:02
再来一次,是不是又加载一次对不对,哎,这就是咱们require啊,Require一样,加载成功是不返回一啊,对不对,那么一样如require也有什么,也有一个require ones,就好比刚才我们在这里面报错,我加载第一次没问题,那我在加载第二次函数文件的时候,是不是就会错,那这个时候我可以干嘛呢?我就可以使用require了,来你看require-ones啊,不是杠。On,哎,它有这个也有一样,也有两种格式啊,比如说还是一样R13这个文件,那么这个时候我再来打印的时候,你跟他反馈什么东西啊打印re。到哪里来?刷新。不是这个文件字来刷新,是返回不值数,而且报错是不是就没有了对吧?哎,如果它第一次包含的,比如说我用require ones第一次包含的时候,它返回什么东西,是不是返回一个一对吧,当我再包含一次CTRLCCTRLV再包含一次的时候,你看它返回的是不是就不尔得数了。对不对,所以说英科路的ones和这个require ones它俩是不是都相当于差不多呀,哎,有就说英科的这里边块啊。
18:01
Require ones这呢啊require one一会再说这个这个问题啊看require ones requires是不是就相当于用require方式仅包含一次文件功能,是不是类似于ones,都是干嘛做一次性的包含吧,对不对?哎,Require和require vans的区别就相当于什么,就相当于跟vans的区别,它是一样的啊那英跟require它俩有什么区别呢?那这个时候我们来看啊,主要我们看什么呢?比如说包含成功呢,都是一样的,对不对,但是包含失败呢,咱们看啊,在这里边现在用块包含,这是我的A上面文件里的是吧?来我把它注释掉了啊,注册掉,比如说在这里边我包含一个hyer,诶,咱们有这个文件吗?没有吧,没有这个文件,现在咱们来看,我在这里边来刷新。刷新以后你看给我报了个警告什么告诉什么呀,没有这样的文件或目录,看到了吗?哎,那是不是直接报错,下面所有东西都没有了。对不对,哎,而且大家注意这里面给你反馈什么错误,是不是一个warning,警告一个error。艾,是什么致命啊,致命就相当于一个人活着对吧?你胳膊折了警告对吧?你脑袋掉了,致命,脑袋掉了你还能说话了吗?不能了吧?哎,所以这是致命的错误啊。
19:06
好了,那现在看到了,如果我用块包含文件包含失败,他给我返回什么,返回一个致命的错误,返回致命错误,下面代码是不是都不执行,对不对?那好了,那再来看,如果我用英刻录的包含文件了,来这回英科录的,我把require注释掉,好,如果在这里边我也让他包含失败,给个handleer a,好,那这个时候我们再来看刷新。你看,因include包含文件失败是给了两个警告的错误,看到了吗?没有致命,没有致命是不是没问题啊?没有致命返回布尔兹的报纸,但是下面的内容是不是能继续执行?对不对,哎,这就是他们两个的区别啊,这是他们两个的区别,来我们来看一下。那里边他说了,Include包含文件如果失败,提示的是挖掘级错误,而require包含文件失败提是不是I瑞级别的错误,对吧?那么包含文件失败,后续的代码继续执行,而快包含文件如果失败,后续代码是不是将不再执行呢?对不对?哎,实际上因刻录的跟快就相当于什么意思,好比结婚,你说结婚的时候谁重要?
20:00
是不新娘重要,新娘不来你跟谁去捡对不对?所以快是不是相当于我去请新娘对吧,娶新娘对吧,我请求你,我需要你过来,这是极度重要了,而是什么呢?而一个路什么呢?就相当于我发了请帖,给各个嘉宾发了请帖,对吧?我告诉你我要结婚了,我在多少多少号,在哪个哪个哪个饭店,对吧,然后我再招待大家,那么这个时候你你只需要干嘛,你要是有时间你就过来,没时间那你红包过来是不是这个意思,哎,所以在我们去使用他的这两个的时候啊,所以大家注意他们两个区别啊,如果这个文件你包含不过来的情况下,整个页面你都不想执行了,那么我可以干嘛?是不是使用request。对不对,如果这个文件包含过,包含就包含不到的话,那么对于我下面代码没有太多影响的话,我是不是就可以使用英客录的了。能明白吧,哎,这就是这两个的区别啊,那么咱们再往下来看。那么他说了,文件包含的格式都有两种,一种是指令格式,一种是函数格式,并且对于文件包含的四个功能都有什么,都有反回值,对吧?啊,都有反回值,那你看in include有两种,一种是函数了,这种是指令的in include one也一样,Require也是require one也是一样啊,所以这四组函,这四组函数啊,这两组函数啊,这两组两组四个函数每个都有两种格式啊,这就是咱们函数最后一部分文件的包含啊好了,那我们今天的内容就到这里。
我来说两句