伙计们最近我决定回到PHP并做一些比简单的登录页面更复杂的东西.3年来,我一直使用Java/JavaEE进行编程,并且对Java应用程序的体系结构有很好的理解.基本上,一个虚拟机(一个简单的OS进程)运行称为字节代码的编译代码.一个简单的Java Web服务器基本上是一个java应用程序,它监听提供的Http请求的TCP端口并相应地响应它当然比这更复杂,但这是它的初始工作.
现在,PHP呢?它是如何工作的 ?简而言之,它的架构是什么.
我搜索了这个问题,但90%的文章解释了如何用PHP实现和构建一个Web应用程序,这不是我想要的.
我声明了100个函数,但我实际上并没有调用它们中的任何函数.定义了如此多的函数会影响加载时间吗?
PHP在调用之前是否处理这些函数?
include('./code.php');工作怎么样?我理解这相当于直接在包含发生的地方"粘贴"代码,但是,例如:
如果我有两个页面,page1.php并且page2.php我需要在其中操作不同的变量和函数./code.php,是否会include()创建副本./code.php,或者它实际上是否链接回实际页面./code.php?
我正在尝试在我的网站上实施Google+登录,但我遇到了问题.这是我的代码(创建Google_Client对象后):
try {
$client->authenticate($_GET['code']);
$plus = new \Google_Service_Plus($client);
$person = $plus->people->get('me');
$firstName = $person->modelData->name->givenName;
} catch (Google_Auth_Exception $e) {
$response = array(
'error' => 'Error: Authentication exception.'
);
} catch (Exception $e) {
$response = array(
'error' => 'Error: Uncaught exception.'
);
}
Run Code Online (Sandbox Code Playgroud)
$client->authenticate() 如果传递给它的代码无效,则抛出Google_Auth_Exception$person对象读取属性会导致致命错误$response作为JSON编码的对象被回显问题是try/catch代码似乎没有正常工作.如果由于代码$_GET['code']无效而导致身份验证失败,则会从脚本返回以下响应:
{"error":"Error: Authentication exception."}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好 - 第一个catch块中的代码被执行了.
但是,try块中的代码继续以奇怪的方式执行.我说"怪异"因为在上面的形式中,出现了一堆错误(最终导致致命错误),这意味着这一行:
$firstName = $person->modelData->name->givenName;
Run Code Online (Sandbox Code Playgroud)
还在执行!应该不是,因为一个例外是上一行抛出执行.如果我注释掉上面的行,则不会抛出错误(再次表明该行已执行,它不应该执行).
以下是在抛出异常后由于上面的行执行而输出的错误:
注意:未定义的索引:第78行的[...]\google-api-php-client-master\src\Google\Model.php中的modelData
注意:尝试在第720行的[...]\ajax_handler.php中获取非对象的属性[注意:这是上面显示的行,其中正在访问该属性]
注意:尝试在第720行的[...]\ajax_handler.php中获取非对象的属性
我说"怪异"的另一个原因是,如果我添加这一行:
die('dying …Run Code Online (Sandbox Code Playgroud) 计算机只能理解机器语言.那么,如果没有将其翻译成机器语言,解释器如何直接执行程序呢?例如:
<?php
echo "Hello, World!" ;
Run Code Online (Sandbox Code Playgroud)
这是一个用PHP编写的简单Hello World程序.它是如何在机器中执行的,而机器却不知道echo是什么?它是如何输出预期的,在这种情况下,字符串Hello,World!?
compiler-construction interpreter programming-languages dynamic-languages