【问题标题】:Source Code of Predefined PHP Classes预定义 PHP 类的源代码
【发布时间】:2015-12-18 13:26:13
【问题描述】:

预定义的 PHP 类(例如 ExecptionPDO 等)的源代码是否在某处可用?

我通过 PHP 尝试了 printing the source code 的类,但它不适用于预定义的类(可能是因为源文件实际上并不存在于我的系统上?)。

我想要源代码的原因是我想知道某些方法的作用以及它们的作用(例如,__wakeupPDO 做了什么)。

【问题讨论】:

  • 可以从php.net网站下载php源文件

标签: php


【解决方案1】:

无法打印出这些类的 php 源代码,因为它们从未用 php 编写过。相反,您可以查看 c 源代码:https://github.com/php/php-src

【讨论】:

  • 你知道预定义类在 c 源代码中的确切位置吗?我在/ext/pdo 中找到了PDO,但找不到例如ExeptionDatetimeCURLFile。是否有一些关于类在哪里的结构?
  • 好的,它们似乎都在ext 中,只是目录名和文件名都不一定与PHP 类名相同。但是可以通过搜索方法名找到。
  • 对不起,我真的不知道。我只需克隆 git 存储库并使用我的 IDE 搜索这些关键字。随意在 Stackoverflow 上提出另一个问题 (#c) 以帮助查找这些类/方法。
【解决方案2】:

如果你真的想看各个类的源码,我就去php.net网站下载PHP的源代码。

这些类甚至可能不是用 PHP 编写的。

但是你真的需要看那些类的源代码吗?

如果您想知道 __wakeup() 对 PDO 的作用,您不应该阅读PHP documentation for magic methods 吗?

上面写着

__wakeup() 的预期用途是重新建立在序列化期间可能丢失的任何数据库连接并执行其他重新初始化任务。

【讨论】:

  • 因为文档相当通用。在这种情况下,它也不是关于 PDO,而是关于__wakeup。我在源代码中查找了它,例如对于PDOwakeup 只是抛出一个异常(它不会重新建立连接)。
  • 正如我所说。答案是 STILL on php.net 要么是文档,要么是直接看 PHP 的源代码
猜你喜欢
  • 2011-06-22
  • 2011-08-28
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多