zendframework / zend-code

BSD 3-Clause "New" or "Revised" License
1.68k stars 78 forks source link

perfect FunctionScanner class #181

Closed pifeifei closed 2 years ago

pifeifei commented 4 years ago
Ocramius commented 4 years ago

Hey, all the scanners are generally to be avoided: consider using (and contributing to) roave/better-reflection instead

pifeifei commented 4 years ago

Performance, which can be ignored temporarily

purpose

The code prompt file is generated automatically according to the ide-helper-generator I wrote. It's useful here to scanner

conceive

For PHP Extensions, such as swoole updates

Existing ide helper (v2.2.0)

<?php

/**
 * docblock and other
 */
class Server{
    /**
     * docblock and other
     * @param string $ip
     * @param int $port
     */
    public function __constuct($ip, $port);
}

/**
 * function docblock and other
 * @param string $ip
 * @param int $port
 */
function swoole_server($ip, $port);

Need to update to 4.x.x

function and class updating.

<?php
Swoole\Server::__construct(string $host, int $port = 0, int $mode = SWOOLE_PROCESS,$sock_type = SWOOLE_SOCK_TCP);
function swoole_server($ip, $port, $mode, $sock_type);

Desired result

Version updates inevitably have functions / class added, deprecated, deprecated, and existing comments combined to generate the latest version of ide-helper

<?php

/**
 * docblock and other
 */
class Server{
    /**
     * docblock and other
     * @param string $ip
     * @param int $port
     * Some parameters are not, and need to be processed manually.
     */
    public function __constuct(
        string $host, 
        int $port = 0,
        int $mode = SWOOLE_PROCESS,
        $sock_type = SWOOLE_SOCK_TCP
    );
}

/**
 * function docblock and other
 * @param string $ip
 * @param int $port
 */
function swoole_server($ip, $port, $mode, $sock_type);

Here you need to use classScanner and FunctionScanner.

The actual situation

One day I need to use ftp to update thehtml files of different servers, because the server has an intranet IP, using the passive mode, the upload fails all the time, and various searches on the Internet have not found a suitable one. I didn't find it, and finally found php bug # 55651. I need a parameter FTP_USEPASVADDRESS to solve the problem instantly. Then I went through the documentation and finally found this parameter in the English page.

Chinese Version:no FTP_USEPASVADDRESS

English original:Have FTP_USEPASVADDRESS

If you have the latest code prompt, type FTP_ and you will be prompted accordingly. There is no need to work hard to find a solution.

Of course, this is official and there is help documentation, so using your own development php extension, or niche php extension, ide-helper automatic generation will be very convenient. You don't need to check the git log to improve the document, although I will not develop PHP at this time. Expansion.

Conclusion: I have a limited level of English, and I am learning English in order to see the original English documents. These are also translated with Google. Please forgive me if there are errors.

pifeifei commented 4 years ago

The FunctionGenerator class is also added to see if it is needed. at master branch: https://github.com/pifeifei/zend-code.git

weierophinney commented 4 years ago

This repository has been closed and moved to laminas/laminas-code; a new issue has been opened at https://github.com/laminas/laminas-code/issues/1.

weierophinney commented 4 years ago

This repository has been moved to laminas/laminas-code. If you feel that this patch is still relevant, please re-open against that repository, and reference this issue. To re-open, we suggest the following workflow: