簡體   English   中英

phpdoc:PHP警告:count():參數必須是實現Countable的數組或對象

[英]phpdoc: PHP Warning: count(): Parameter must be an array or an object that implements Countable

安裝

$ wget http://www.phpdoc.org/phpDocumentor.phar
$ chmod +x phpdocumentor.phar

讓我們嘗試一堂課

$ cat src/Classe.php
<?php

/**
 * Classe.
 */
class Classe {}

$ ./phpdocumentor.phar -f src/Classe.php
Collecting files .. OK
Initializing parser .. OK
Parsing files
blablabla...

好吧。 但是現在讓我們嘗試一個功能

$ cat src/fun.php
<?php
/**
 * Summary fun.php
 */

/**
 * Function.
 */
function fun() {}

$ ./phpdocumentor.phar -f src/fun.php
Collecting files .. OK
Initializing parser .. OK
Parsing files
blablabla...
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
  Execute transformation using writer "twig"
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
  Execute transformation using writer "twig"
  Execute transformation using writer "twig"
  Execute transformation using writer "twig"
  Execute transformation using writer "twig"
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in phpDocumentor.phar/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1293
blablabla...

現在有錯誤(警告)。 為什么?

我也嘗試通過作曲家安裝phpdoc

$ composer require --dev phpDocumentor/phpDocumentor
blablabla...
Package kherge/version is abandoned, you should avoid using it. No replacement was suggested.
Package herrera-io/json is abandoned, you should avoid using it. Use kherge/json instead.
Package herrera-io/phar-update is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files

但是結果更糟

$ vendor/bin/phpdoc -f src/Classe.php 
PHP Fatal error:  Uncaught Doctrine\Common\Annotations\AnnotationException: [Semantical Error] The annotation "@JMS\Serializer\Annotation\Type" in property phpDocumentor\Configuration::$title does not exist, or could not be auto-loaded. in vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:54
Stack trace:
#0 vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(741): Doctrine\Common\Annotations\AnnotationException::semanticalError('The annotation ...')
#1 vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(663): Doctrine\Common\Annotations\DocParser->Annotation()
#2 vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(354): Doctrine\Common\Annotations\DocParser->Annotations()
#3 vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php(254): Doctrine\Common\Annotations\Doc in vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php on line 54

在這一點上,我想知道,這個phpdoc是有效的工具嗎? 我是無法使用它的人嗎? 怎么了?

之所以發生這些錯誤,是因為您使用一個非數組參數或未實現Countable接口的參數調用count方法。 在PHP 7.2之前,如果您調用count(null) ,則將返回值0,並且不會發出警告,在PHP 7.2之后(包括),在調用帶有無效參數的count時發出警告。 您可以在此處檢查第一個參數必須是:

數組或可數對象。

這意味着phpdocumentor.phar某些代碼與PHP 7.2+不完全兼容。 您可以嘗試降級php版本或升級phpdocumentar (如果可能)。

++ composer require --dev phpdocumentor/phpdocumentor dev-master
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

++ php -v
PHP 7.2.19-0ubuntu0.19.04.2 (cli) (built: Aug 13 2019 11:45:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.19-0ubuntu0.19.04.2, Copyright (c) 1999-2018, by Zend Technologies

++ cat src/Assembler.php
<?php
/**
 * File summary.
 */

namespace Xyz;

/**
 * @package Abc
 */
class Assembler {

    function assemble(?string $string) {

    }

}

++ php vendor/bin/phpdoc -f src/Assembler.php --template=responsive
Collecting files .. OK
Initializing parser .. OK
Parsing files
Parsing /mnt/shared-ntfs/Downloads/test-phpdoc/src/Assembler.php
Parse Error: Syntax error, unexpected '?', expecting T_VARIABLE on line 13  No summary was found for this file
Storing cache in "/mnt/shared-ntfs/Downloads/test-phpdoc/output/build" .. OK
Load cache                                                         ..    0.001s
Preparing template "responsive"                                    ..    0.006s
Preparing 13 transformations                                       ..    0.000s
Build "elements" index                                             ..    0.000s
Replace textual FQCNs with object aliases                          ..    0.000s
Resolve @link and @see tags in descriptions                        ..    0.000s
Enriches inline example tags with their sources                    ..    0.000s
Build "packages" index                                             ..    0.001s
Build "namespaces" index and add namespaces to "elements"          ..    0.000s
Collect all markers embedded in tags                               ..    0.000s
Transform analyzed project into artifacts                          .. 
Applying 13 transformations
  Initialize writer "phpDocumentor\Plugin\Core\Transformer\Writer\FileIo"
  Initialize writer "phpDocumentor\Plugin\Core\Transformer\Writer\Xml"
  Initialize writer "phpDocumentor\Plugin\Core\Transformer\Writer\Xsl"
  Initialize writer "phpDocumentor\Plugin\Graphs\Writer\Graph"
  Execute transformation using writer "FileIo"
  Execute transformation using writer "FileIo"
  Execute transformation using writer "FileIo"
  Execute transformation using writer "xml"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "xsl"
  Execute transformation using writer "Graph"
   0.133s
Analyze results and write report to log                            ..    0.000s

解析錯誤:語法錯誤,意外的'?',期望T_VARIABLE在第13行上找不到此文件的摘要

php 7.2和phpdoc是否可能真的不同意? 是否有任何與php 7.2兼容的phpdoc版本?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM