小编jrs*_*gtr的帖子

Symfony Serializer component: Deserialize array of objects of mixed types

I would like to know if there is a method to deserialize an array containing objects of different types. I built something where I can serialize and deserialize an array of objects of a specific type like this:

$nodes = [
    new PostNode(),
    new PostNode(),
    new PostNode()
];

$serializer = new Serializer( [
    new ObjectNormalizer(),
    new ArrayDenormalizer(),
], [ new JsonEncoder() ] ); 

$data = $serializer->serialize($nodes, 'json');

$deSerializedNodes = $serializer->deserialize( $data, PostNode::class . '[]', 'json' );
Run Code Online (Sandbox Code Playgroud)

我得到的正是插入的数组,所以很好。现在,我想知道是否可以像这样对一个数组进行序列化和反序列化:

$nodes = [ …
Run Code Online (Sandbox Code Playgroud)

php serializer symfony

6
推荐指数
1
解决办法
565
查看次数

Google 客户端:$client->isAccessTokenExpired() 始终返回 true

我编写了一个方法来获取 Google 客户端并在需要时刷新令牌文件。但是$client->isAccessTokenExpired()总是返回 true,因此每个请求都会转储一个新令牌。

我已经读过这个问题了。答案不适用于我。我已经按照正确的顺序执行了这些步骤。

希望有人能引导我走向正确的方向。

/**
 * Initialize Google Client and return it
 * @return Client
 */
private function getClient()
{
    if ( $this->client !== null ) {
        return $this->client;
    }

    $client = new Client();
    $client->setClientId($this->google_client_id);
    $client->setClientSecret($this->google_client_secret);
    $client->setAccessType('offline');
    $client->setApprovalPrompt('force');

    $client->setAccessToken(file_get_contents($this->google_token));

    if($client->isAccessTokenExpired()) {
        try {
            $fs = new FileSystem();
            $fs->dumpFile($this->google_token, json_encode($client->getAccessToken()));
            $this->logger->info(sprintf('Dumped new Google OAuth token in: %s', $this->google_token));
        } catch(IOException $e) {
            $this->logger->critical(sprintf('Error dumping new Google OAuth token: %s', $e->getMessage());
        }
    }

    $this->client = $client; …
Run Code Online (Sandbox Code Playgroud)

php google-oauth youtube-data-api

5
推荐指数
0
解决办法
688
查看次数

LinkedIn V2 版本 API “没有足够的权限访问 /me GET”

需要帮助的人,

有没有人可以调用 LinkedIn V2/me版本。我能够成功地对 V1 版本进行 API 调用,得到响应作为成员所需的信息。

https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,headline,location,industry,picture-url,summary,positions,public-profile-url ,site-standard-profile-request,last-modified-timestamp)?format=json

当调用https://api.linkedin.com/v2/me ?format=json 时,方法 :GET in postman by access token in header 作为 Authorization.It 抛出以下错误

回复 :

{

    "serviceErrorCode": 100,

    "message": "Not enough permissions to access: GET /me",

    "status": 403

}
Run Code Online (Sandbox Code Playgroud)

我对 V1 和 V2 版本使用了相同的OAuth2.0访问令牌。自 2015 年 8 月 10 日起获得r_basicprofile领英消费者应用平台 V1 版本的许可。

从我们的应用程序调用 V1 API 没有问题。Linkedin 将是日落 V1 版本,因此只需要根据来自 LinkedIn 端的 X 应用程序 DLP 的限制使用公共 API。

什么是LinkedIn 公共 API端点和所需的 API 访问权限? …

linkedin linkedin-api

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

PHP try、catch 优先级和继承

我想知道有关 PHP try,catch语句的一些事情。

让我们考虑以下示例。

abstract class ExceptionA extends Exception
{}

class ExceptionB extends ExceptionA
{}

class ExceptionTest
{
    public function example()
    {
        try {
            throw new ExceptionB();
        } catch ( ExceptionB $e ) {
            echo 'ExceptionB was caught';
        } catch ( ExceptionA $e ) {
            echo 'ExceptionA was caught';
        } catch ( Exception $e ) {
            echo 'Exception was caught';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所有catch语句都匹配异常。其中第一个 ( ExceptionB) 是最接近的匹配。

陈述的顺序会catch影响到谁会抓住它吗?

php

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

错误:RPC 失败;HTTP 504 curl 22 请求的 URL 返回错误:504 GATEWAY_TIMEOUT

我是台湾学生,我的英语语法不好,但我能听懂你说的话。我想使用 git 将我的文件(3GB)推送到 heroku 但失败了。

我试过。

git config --global http.postBuffer 800000000.

git config --add remote.heroku.proxy "".

git config --global http.proxy ''<< 
Run Code Online (Sandbox Code Playgroud)

当我git push heroku master然后它显示致命:

无法访问“ https://git.heroku.com/pushboss.git/ ”:无法解析代理:“”。

所以我必须输入git config --global --unset http.proxy.

这是我的错误消息:

错误:RPC 失败;HTTP 504 curl 22 请求的 URL 返回错误:504 GATEWAY_TIMEOUT。

fatal:远端意外挂断。

git push heroku

3
推荐指数
1
解决办法
2万
查看次数

Symfony v4、php bin/console 无法按预期工作。自动中止

我刚刚在我的新 SSD 上安装了 Composer、php、apache 等。之后我想开始编码。我从 IDE 中的另一个驱动器打开了我的项目。然后我想将我的灯具加载到我的新数据库中,但我不能。我什至无法进行迁移等。php bin/控制台已损坏(它会自动中止任何终端输入等)。我尝试从其他终端运行命令,但它不起作用。您可以在下面看到带或不带 -vvv 的命令。感谢您回复如何修复它。

第一的:

D:\project>php bin/console doctrine:fixtures:load
Run Code Online (Sandbox Code Playgroud)

小心,数据库“project1”将被清除。你想继续吗?(是/否)[否]:>

流产了。

学说:fixtures:load [--append] [--group GROUP] [--em EM] [--shard SHARD] [--purge-with-truncate] [-h|--help] [-q|- -quiet] [ -v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|- -env ENV] [--无调试] [--]

多一个:

D:\project>php bin/console make:controller
Run Code Online (Sandbox Code Playgroud)

为您的控制器类选择一个名称(例如 VictoriousGnomeController):>

流产了。

make:controller [--无模板] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi ] [--no-ansi] [-n|--no-in 交互] [-e|--env ENV] [--no-debug] [--] []

带有冗长的

D:\project>php bin/console -vvv make:controller
Run Code Online (Sandbox Code Playgroud)

2019-12-10T12:48:26 + 00:00 [调试] 通知事件“console.command”到侦听器“Symfony\Component\HttpKernel\EventListener\Deb ugHandlersListener::configure”。

为您的控制器类选择一个名称(例如 AgreeableJellybeanController):

2019-12-10T12:48:26+00:00 [错误] 运行命令“-vvv make:controller”时抛出错误。消息:“已中止。” 2019-12-10T12:48:26 …

php console command bin symfony

3
推荐指数
1
解决办法
3858
查看次数

Symfony下载后删除文件

我正在开发一个Symfony应用程序,用户可以使用它来裁剪图像.有人下载了裁剪后的图像,我希望应用程序将其从服务器中删除.

我目前有这个控制器动作:

/**
 * @Route(
 *      "/download/{crop_id}",
 *      name="download_cropped",
 *      options={"expose"=true}
 * )
 *
 * @ParamConverter(
 *      "crop",
 *      class="WebwijsCropperBundle:Crop",
 *      options={"id" = "crop_id"}
 * )
 *
 */
public function downloadAction(Crop $crop)
{
    $dir = $this->container->getParameter('image.cropped.dir');
    return new BinaryFileResponse($dir . '/' . $crop->getCroppedFile());
}
Run Code Online (Sandbox Code Playgroud)

我创建了这个EventListener,我想在发送响应后删除图像.每次响应后都会触发此监听器.

因此,如果响应来自正确的控制器操作,如何获取我需要知道的信息.我怎样才能获得crop_id参数,以便知道要删除哪个文件?

class FileRemovalListener
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function onKernelTerminate(PostResponseEvent $event)
    {
        $response = $event->getResponse();
        $request = $event->getRequest();
        // what do i have to do here to …
Run Code Online (Sandbox Code Playgroud)

php symfony

2
推荐指数
1
解决办法
1501
查看次数