doutuo3899 2015-09-16 10:46
浏览 69
已采纳

在静态类中使用另一个文件中的外部数组

I'm currently working on a project where I have to work with huge arrays. With huge, I mean 1k elements or more. Since these are a lot of arrays and i sometimes mess things up, I decided to create a class with static functions so i can call the functions which would make the entire project easier to read. This is what I currently have:

ArrayAccess.class.php:

require "dep/arrays/elements.php";
class ArrayAccess {

    public static function get_value_from_element($element) {
        return $elements[$element];
    }
}

elements.php:

<?php
$elements = array(
    "sam" => 6, ... and so on ...

I simply want to be able to use ArrayAccess::get_value_from_element($element) in my project. It is so much easier to read than all these indexes everywhere. However, the array is defined in the elements.php file - I can't use that in the class.

So how can I access the array in my class? Please note, I cannot copy it into the class, the file would be larger than 400k lines, this is not an option.

  • 写回答

3条回答

  • dongzhuohan7085 2015-09-16 11:09
    关注

    You can return a value from an include (or require in this case) and store that to a static property the first time the function is called.

    elements.php:

    <?php
    return array("sam" => 6, ...);
    

    DataAccess.php:

    class DataAccess {
    
        private static $elements = array();
    
        public static function get_value_from_element($element) {
            if(self::$elements === array()) {
                self::$elements = require "elements.php";
            }
            return self::$elements[$element];
        }
    }
    

    You should also avoid naming your class ArrayAccess, since it already exists in PHP.

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

报告相同问题?

悬赏问题

  • ¥15 为什么eprime输出的数据会有缺失?
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题