• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

文件加载-了解一个project的第一步

php 搞代码 4年前 (2022-01-24) 16次浏览 已收录 0个评论

文件加载—理解一个project的第一步

  当我最开始写php的时候,总是担心这个问题:我在这儿new的一个class能加载到对应的类文件吗?毕竟一运行就报Fatal Error,什么**文件没找到,类无法实例化等等是一种很“低级”的错误,怕别人看了笑话。于是每接一个新任务,我总想把它的加载过程弄清楚(以前只知道几个html标签和样式,不知算不算web开发),有时头儿看了说还有闲心看这个,赶紧写逻辑,照这样做就行了……你妹你知道当然有把握了D:,后来发现原来流程都差不多。

  在一个IDE中开发时,如C++/Java,一般是新建一个工程,通过IDE新添加一个文件到指定目录下,然后#include/Import进来即可,php则使这一步骤更加过程化,文件的加载过程基本确定了这个project(框架或者自搭的项目)的目录结构和文件的分门别类。

   不管框架还是自搭的项目总得有个入口文件,这时要事先加载一些基本信息,如配置文件、通用方法等,使用的基本是手动直接加载单个文件形式,使用下面四个方法之一:

  include、require、include_once、require_once

    <span style="color: #0000ff">include</span>('config.php'<span style="color: #000000">);    </span><span style="color: #0000ff">require</span>('database.php');

  涉及到类文件的加载,少部分是直接加载,比如,通用方法作为静态方法写在一个类Utilities中,因为是后边很多要用到的方法(如错误输出、curl请求、随机字符串生成…),所以用类封装起来,一般也是在加载配置文件时连带加载进来

  include*本文来@源gao@daima#com搞(%代@#码@网2

搞代gaodaima码

(‘Utilities.php’);

  而更通用的情况是:类的动态加载。首先不谈的加载的方式,来看看大概什么时候会用到一个类和实例:

  1. 最明显的,$obj = new A; 它的变种$className = ‘A’; $obj = $className; 都一样;

  2. 类的静态方法、静态变量和常量的调用,即Utilities::httpRequest()、Utilities::$instance、Utilities::HOST;

  3. 在php函数中,使用了回调函数的情况,最典型的call_user_func_array()(call_user_func),还有其他用到了callback的地方,如数组中的array_walk、array_map,它们需要一个回调函数作为参数。

  回调函数非常灵活,不止可以是简单函数,还可以是对象的方法,包括静态类方法。因为可以用对象方法或静态方法,所以这钟时候也要去加载对应的类文件。自php5.3起,回调函数还可以像js中,用匿名函数来实现。

     <span style="color: #0000ff">class</span><span style="color: #000000"> A{         </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> cube(<span style="color: #800080">$var</span><span style="color: #000000">){             </span><span style="color: #0000ff">return</span> <span style="color: #008080">pow</span>(<span style="color: #800080">$var</span>, 3<span style="color: #000000">);         }                  </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> twice(<span style="color: #800080">$var</span><span style="color: #000000">){             </span><span style="color: #0000ff">return</span> 2*<span style="color: #800080">$var</span><span style="color: #000000">;         }     }     </span><span style="color: #008000">//</span><span style="color: #008000"> 使用类的静态方法</span>     <span style="color: #800080">$num</span> = <span style="color: #008080">call_user_func</span>('A::cube', 5<span style="color: #000000">);     </span><span style="color: #008000">//</span><span style="color: #008000"> 使用对象</span>     <span style="color: #800080">$obj</span> = <span style="color: #0000ff">new</span><span style="color: #000000"> A;     </span><span style="color: #800080">$num</span> = <span style="color: #008080">call_user_func_array</span>(<span style="color: #0000ff">array</span>(<span style="color: #800080">$obj</span>, 'twice'), <span style="color: #0000ff">array</span>(7));


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:文件加载-了解一个project的第一步

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址