4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

Simple 'PHP Unit Test' for detecting pre function variable dump for laravel and PHP.

A simple unit testing a class method for detecting pre function variable dumper in both php and php framework's laravel.

//---code snippet--//

protected static function searchForExecutedVariableDumper(className,className,methodName, $dump = null) {

    class=new\ReflectionClass(class = new \ReflectionClass(className);

    content=content =class->getMethod($methodName);


    file=file =content->getFileName();

    startline=start_line =content->getStartLine();
    endline=end_line =content->getEndLine() - 1;

    length=length =end_line - $start_line;

    source=file(source = file(file);

    body=arrayslice(body = array_slice(source, startline,start_line,length);

    $search = [];
    $search2 = [];
    $subject = '';

    $dumper = '';

    if($dump) {
        switch ($dump) {
            case 'dd' :
            case 'dd()' :
                $dumper = 'dd';
                break;

            case 'dump' :
            case 'dump()' :
                $dumper = 'dump';
                break;

            case 'var_dump' :
            case 'var_dump()' :
                $dumper = 'var_dump';
                break;

        }
    }

    foreach (bodyasbody assegment) {

        $subset_prefix = '';
        $subset_suffix = '';

        dumperprefix=pregmatch("/vardump|dd|dump/",dumper_prefix = preg_match("/var_dump|dd|dump/",segment, $matches);

        /*
         * Dumper base on the var dumper present.
         * */
        if(dumperprefix&&isnull(dumper_prefix && is_null(dump)) {
            dumper=dumper =matches[0];

            switch ($dumper) {
                case 'dd' :
                    $dumper = 'dd';
                    break;

                case 'dump' :
                    $dumper = 'dump';
                    break;

                case 'var_dump' :
                    $dumper = 'var_dump';
                    break;

            }
        }

        /*
         * If the $dump var not equal to dumper present.
         * */
        if($dumper_prefix) {
            dumper=dumper =matches[0];

            switch ($dumper) {
                case 'dd' :
                    $dumper = 'dd';
                    break;

                case 'dump' :
                    $dumper = 'dump';
                    break;

                case 'var_dump' :
                    $dumper = 'var_dump';
                    break;

            }
        }


        if($dumper == 'dd') {

            subsetprefix=substr(trim(subset_prefix = substr(trim(segment), 0 , 3);
            subsetsuffix=substr(trim(subset_suffix = substr(trim(segment), -2 , 1);

        }

        if($dumper == 'var_dump') {

            subsetprefix=substr(trim(subset_prefix = substr(trim(segment), 0 , 9);
            subsetsuffix=substr(trim(subset_suffix = substr(trim(segment), -2 , 1);

        }

        if($dumper == 'dump') {

            subsetprefix=substr(trim(subset_prefix = substr(trim(segment), 0 , 5);
            subsetsuffix=substr(trim(subset_suffix = substr(trim(segment), -2 , 1);

        }



        search[]=search[] =subset_prefix;
        search2[]=search2[] =subset_suffix;

        if( (in_array('dd(', search)&&inarray(')',search) && in_array(')',search2)) || (in_array('var_dump(', search)&&inarray(')',search) && in_array(')',search2)) || (in_array('dump(', search)&&inarray(')',search) && in_array(')',search2)) ) {

            strconcat=str_concat =subset_prefix . $subset_suffix;

            switch ($str_concat) {

                case 'dd()' :
                    subject=subject =str_concat;
                    break;

                case 'var_dump()' :
                    subject=subject =str_concat;
                    break;

                case 'dump()' :
                    subject=subject =str_concat;
                    break;

            }

            break;
        }

    }

    if($dumper == 'dd') {
        self::assertNotSame($subject, 'dd()', 'A variable dumper (\'dd()\') found being executed!');
    }

    if($dumper == 'var_dump') {
        self::assertNotSame($subject, 'var_dump()', 'A variable dumper (\'var_dump()\') found being executed!');
    }

    if($dumper == 'dump') {
        self::assertNotSame($subject, 'dump()', 'A variable dumper (\'dump()\') found being executed!');
    }
}
11 upvotes $0.38

Replies (6)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: