dousi6303 2015-01-30 23:55
浏览 20
已采纳

如何从php 5.5.12版本的命名空间中访问我的类属性?

I'm using WAMPSERVER 2.5 and PHP version 5.5.12 on Windows 8 PC. I created a namespace which worked ok when I was running PHP version 5.2.12. After upgrading to php version 5.5.12 I'm getting error message about undefined variables which I think means that the namespace is not being used. Here's what my code looks like:

In my UploadFile.php file I have this:

 <?php
     namespace myNamespace;

     class UploadFile
     {

           protected $avatarUrl;


    public function getUrl()
     {

          return $this->avatarUrl;

     }


    protected function moveFile($file)
    {
           $filename = isset($this->newName) ? $this->newName : $file['name'];
    echo $file[$key];
    $success = move_uploaded_file($file['tmp_name'], $this->destination . $filename);
    if ($success) {

                    $url='http://westcoastchill.com/dc-esports/images/' . $filename;    
                    $this->avatarUrl=$url;
                        ... 
                }
                .....
 ?>

Then here's the html form that uses the class in the namespace where I get the error messages that states that the variable 'newUrl' is undefined and the index 'displaymax' is undifined.

 <?php 
 require_once 'uploads/src/myNamespace/UploadFile.php';//<------names here
 if (!isset($_SESSION['maxfiles'])) {
     $_SESSION['maxfiles'] = ini_get('max_file_uploads');
     $_SESSION['postmax'] = UploadFile::convertToBytes(ini_get('post_max_size')); 
     $_SESSION['displaymax'] =   UploadFile::convertFromBytes($_SESSION['postmax']); //<------ undifined index

 }



 $max = 50 * 1024;
 $result = array();
 if (isset($_POST['upload'])) {

 $destination = __DIR__ . '/uploads/uploaded/';
 try {
    $upload = new UploadFile($destination);
    $upload->setMaxSize($max);

    $upload->allowAllTypes();
    $upload->upload();
    $result = $upload->getMessages();
    $newUrl=$upload->getUrl();  //<----------- here's the undifined newUrl;

     } catch (Exception $e) {  
    $result[] = $e->getMessage();
     }
 }
  $error = error_get_last();
  $oldUrl=$newUrl;
  ...
 ?>

} How can I access my class from a namespace with php version 5.5.12?

Thanks for any help with this!

UPDATE: Sorry I had getUrl() outside of superclass but in my actual project is in the correct place. So I tried:

  \myNamespace\UploadFile::convertToBytes(ini_get('post_max_size'));...

but I still get the same error. I also tried adding use:

  myNamespace\UploadFile and \myNamespace\UploadFile...

still getting the same error message. The thing is my code worked with the using statement before I updated PHP so I'm curious why just an update would change things.

  • 写回答

2条回答 默认 最新

  • dongyun3805 2015-02-01 17:34
    关注

    The issue was the configuration of the php.ini file. After researching more I tried turning off 'display_errors=Off in the php.ini file and the code the code ran using the namespace and everything. Conclusion: the php.ini file of the new installation different settings. I'll explore the settings more but my problem was solved by turning off error displaying. Obviously this is not a desired option so I'll toggle on and off as I go forward and read up on other parameters in the file that may help me.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)