相关疑难解决方法(0)

129
推荐指数
7
解决办法
9万
查看次数

PHP如何工作以及它的架构是什么?

伙计们最近我决定回到PHP并做一些比简单的登录页面更复杂的东西.3年来,我一直使用Java/JavaEE进行编程,并且对Java应用程序的体系结构有很好的理解.基本上,一个虚拟机(一个简单的OS进程)运行称为字节代码的编译代码.一个简单的Java Web服务器基本上是一个java应用程序,它监听提供的Http请求的TCP端口并相应地响应它当然比这更复杂,但这是它的初始工作.

现在,PHP呢?它是如何工作的 ?简而言之,它的架构是什么.

我搜索了这个问题,但90%的文章解释了如何用PHP实现和构建一个Web应用程序,这不是我想要的.

php

13
推荐指数
2
解决办法
9053
查看次数

PHP在调用之前是否读取了函数?

我声明了100个函数,但我实际上并没有调用它们中的任何函数.定义了如此多的函数会影响加载时间吗?

PHP在调用之前是否处理这些函数?

php performance php-internals

10
推荐指数
1
解决办法
512
查看次数

在PHP中,include()如何正常工作?

include('./code.php');工作怎么样?我理解这相当于直接在包含发生的地方"粘贴"代码,但是,例如:

如果我有两个页面,page1.php并且page2.php我需要在其中操作不同的变量和函数./code.php,是否会include()创建副本./code.php,或者它实际上是否链接回实际页面./code.php

php

7
推荐指数
2
解决办法
5080
查看次数

try块中的代码在异常后继续执行?

我正在尝试在我的网站上实施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)
  1. $client->authenticate() 如果传递给它的代码无效,则抛出Google_Auth_Exception
  2. 如果身份验证失败,则从$person对象读取属性会导致致命错误
  3. $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 try-catch google-plus

7
推荐指数
1
解决办法
979
查看次数

如果程序从未被翻译成机器语言,那么如何执行以解释语言编写的程序?

计算机只能理解机器语言.那么,如果没有将其翻译成机器语言,解释器如何直接执行程序呢?例如:

<?php
    echo "Hello, World!" ;
Run Code Online (Sandbox Code Playgroud)

这是一个用PHP编写的简单Hello World程序.它是如何在机器中执行的,而机器却不知道echo是什么?它是如何输出预期的,在这种情况下,字符串Hello,World!?

compiler-construction interpreter programming-languages dynamic-languages

5
推荐指数
1
解决办法
221
查看次数