Why is my class throwing warnings?

Discussion in 'PHP' started by cesarcesar, Jun 4, 2007.

  1. #1
    Why is this code throwing the following errors? Thanks.

    
    <?
    class DirTree {
    
        /**
         * Get a tree of folders and files from a spec dir
         * @returns An ArrayCollection of Tree
         */
    	function DirTree($dir_tree) {
    		$_tree = $this->parse_dir($dir_tree);
    		return $_tree;
    	}
    
        /**
         * Get a tree of folders and files from a spec dir
         * @returns An Array of Tree
         */
    	function parse_dir($folder) {
    
    		$dir                = @opendir($folder);
    		$filecount          = 0;
    		$foldercount		= 0;
    		$tree				= array();
    		$limb				= array();
    		$cnt				= 0;
    
    		while(false != ($item = @readdir($dir))) {
    
    			if($item == "." || $item == "..") continue;
    
    			if(is_dir("$folder/$item")){
    
    				$tmpTree = new DirTree();
    
    				$limb['sub_folder'][]['folder_name'] = $item;
    				$limb['sub_folder'][] = $tmpTree->parse_dir("$folder/$item");
    
    				$foldercount++;
    				$limb['folders'][] = $foldercount;
    
    				$filecount++;
    				$limb['files'][] = $filecount;
    				//continue;
    
    			}else{
    
    				$limb['file_name'][] = $item;
    
    			}
    		}
    
    		$tree[] = $limb;
    		$cnt++;
    		return $tree;
    
    	}
    }
    
    $class = new DirTree();
    
    /* view array  */
    echo "<pre>";
    print_r($class->DirTree("../../core/amf/app"));
    echo "</pre>*****************************************************************";
    ?>
    
    Code (markup):
    Warning: Missing argument 1 for DirTree::DirTree() in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 8

    Notice: Undefined variable: dir_tree in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 9

    Warning: Missing argument 1 for DirTree::DirTree() in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 8

    Notice: Undefined variable: dir_tree in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 9

    Warning: Missing argument 1 for DirTree::DirTree() in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 8

    Notice: Undefined variable: dir_tree in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 9

    Warning: Missing argument 1 for DirTree::DirTree() in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 8

    Notice: Undefined variable: dir_tree in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 9

    Warning: Missing argument 1 for DirTree::DirTree() in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 8

    Notice: Undefined variable: dir_tree in C:\apache2triad\htdocs\flashservices_v1.9\services\folder_tree\dir_tree2.php on line 9
     
    cesarcesar, Jun 4, 2007 IP
  2. mrmonster

    mrmonster Active Member

    Messages:
    374
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    60
    #2
    Looks like you have attempted a call to $yourObject->DirTree($arg); without passing the argument.
     
    mrmonster, Jun 4, 2007 IP
  3. krt

    krt Well-Known Member

    Messages:
    829
    Likes Received:
    38
    Best Answers:
    0
    Trophy Points:
    120
    #3
    When using new to create an instance of the class, you are invocating the constructor DirTree($dir_tree);

    So in your code, you need:
    $class = new DirTree("../../core/amf/app");
    PHP:
     
    krt, Jun 4, 2007 IP