标签: static-variables

跨多个.php页面的PHP静态变量

我正在用PHP构建一个POP3邮箱.我有以下文件:

  • server_access.php(从POP3服务器获取邮件)
  • data_access.php(将邮件提取/写入本地数据库)
  • mime_parser.php(解析MIME内容)
  • core.php(使用上面的文件并将解析后的邮件存储为名为$ inbox的关联数组)

现在,我有页面 mailbox.php来显示收件箱和showmail.php来显示每个邮件.用户的凭据存储在.ini文件中,并在必要时使用.问题是,我在mailbox.php和showmail.php中都有一个require_once('core.php')

我可以显示收件箱(即$ inbox有值),但是,如果我选择阅读邮件(showmail.php的弹出窗口),$ inbox是一个空数组.

$ inbox在core.php中定义为静态数组

php static-variables

1
推荐指数
1
解决办法
6819
查看次数

在请求之间记住PHP中的对象状态

我正在编写一个应用程序,我将有许多不同语言的字典值.我知道我可以使用GetText,但是AFAIR文件必须在编辑后编译,我想让用户编辑字典,我不能在服务器上重新编译.mo文件.我不知道将使用多少种语言,因此解决方案必须具有弹性.

我设计了数据库,因此它运行良好,架构看起来很好,但是对于每个字典值都有几个连接,所以解决方案不是太快.

出于这个原因,我想考虑存储一次字典值,并在编辑其中的值后才刷新它.遗憾的是,PHP静态变量无法使用,因为它们在请求结束时死亡.我不想使用会话,因为我将不得不为每个用户进行数据库调用.理想情况下,我想像在Java中一样使用静态变量 - 只要应用程序在JVM中存在,它们就会存在.

对于所有用户(不是每个用户),长时间(不是每个请求)存储一些变量(在我的示例中 - 字典,字典条目等)的最佳解决方案是什么?

我正在考虑创建DictionaryValues类,类序列化一次,然后每个请求反序列化它.每当有人编辑字典时,对象将被再次序列化并将替换旧的序列化对象.当然,与读取字典值的频率相比,编辑很少发生.

这是一个好的解决方案吗?我应该序列化对象并将其存储在磁盘上还是将其写入数据库?哪一个更快?

也许你找到了更好的解决方案?

php database session static-variables internationalization

1
推荐指数
1
解决办法
904
查看次数

静态变量初始化代码永远不会被调用

我有一个使用我制作的静态库的应用程序.库中的一个.cpp文件有一个静态变量声明,其ctor在单例上调用一个函数来执行某些操作 - 例如添加一个字符串.

现在,当我从应用程序中使用该库时,我的单例似乎不包含应该添加的字符串的任何痕迹.

我肯定错过了一些东西,但我不知道是什么......

c++ static-variables dead-code

1
推荐指数
1
解决办法
792
查看次数

重载函数中的静态变量

我有一个功能,它执行以下操作:

  • 调用函数并传递true bool值时,它会将静态bool值设置为true
  • 当函数被调用并传递一个字符串时,如果静态bool值设置为true,它将对该字符串执行某些操作

这是我关注的问题 - 两个重载函数之间的静态变量是否保持相同?如果没有,我可以简单地创建一个单独的函数来跟踪bool值,但我试着保持简单.

c++ static overloading function static-variables

1
推荐指数
1
解决办法
1071
查看次数

内存中的静态成员和静态全局变量

让我们考虑两种情况:

1.)静态全局变量.当我生成地图文件时,我找不到.bss或.data部分中的静态全局变量.

2.)静态成员

    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include <list>
    #include <algorithm>

    using namespace std;

    class Tree {
        struct Node {
            Node(int i, int d): id(i), dist(d) {}
            int id;
            int dist; // distance to the parent node
            list<Node*> children;
        };

        class FindNode {
            static Node* match;
            int id;
        public:
            FindNode(int i): id(i) {}
            Node* get_match()
            {
                return match;
            }

            bool operator()(Node* node)
            {
                if (node->id == id) {
                    match = node;
                    return true;
                }
                if (find_if(node->children.begin(), node->children.end(), FindNode(id)) …
Run Code Online (Sandbox Code Playgroud)

c++ global-variables static-variables

1
推荐指数
1
解决办法
451
查看次数

静态方法中的python类变量

[更新]:完整代码

我总是对 pyhton 的静态方法感到困惑,但根据这个(最后一个答案),它应该可以工作!

得到错误:

AttributeError: 类 MyConnection 没有属性“myuser”

class MyConnection:
    def __init__(self, hostname, port, user, password):
        myhostname = hostname
        myport = port
        myuser = user
        mypassword = password
        isisessid = None

    @staticmethod
    def connect():
        my_session = MyConnection()

        headers = {'content-type': 'application/json'}
        headers['Authorization'] = 'Basic ' + string.strip(
            base64.encodestring(MyConnection.myuser + ':' + MyConnection.mypassword))

        body = json.dumps({'username': MyConnection.myuser, 'password': MyConnection.mypassword,
            'services': ['platform', 'namespace']})

        uri = '/session/1/session'

        connection = httplib.HTTPSConnection(MyConnection.myhostname, MyConnection.myport)
        connection.connect()

        try:
            connection.request('POST', uri, body, headers)
            response = connection.getresponse() …
Run Code Online (Sandbox Code Playgroud)

python oop static-methods static-variables

1
推荐指数
1
解决办法
6209
查看次数

Python - 函数内部的静态变量

我试图在函数内设置一个静态变量.基本上,我希望这个变量false最初.在第一次调用此函数后,我希望将变量设置为true.

我目前有以下内容:

class LKTracker(object):

    def track_points(self,width,height):
        if not hasattr(track_points, "gotInitialFeatures"):
            track_points.gotInitialFeatures = None

        if not track_points.gotInitialFeatures:
            #do some stuff
        track_points.gotInitialFeatures = True
Run Code Online (Sandbox Code Playgroud)

使用此代码,我不断收到以下错误:

NameError: global name 'track_points' is not defined
Run Code Online (Sandbox Code Playgroud)

谁知道这里发生了什么?

python static-variables

1
推荐指数
1
解决办法
9268
查看次数

为什么我不能在java构造函数中使用静态变量?

编译说illegal modifier for parameter i.
请告诉我我做错了什么.为什么我不能在Java构造函数中使用静态变量?

class Student5{  

    Student5() {  
        static int i = 0;
        System.out.println(i++);  
    }

    public static void main(String args[]){  
        Student5 c1 = new Student5();
        Student5 c2 = new Student5();
        Student5 c3 = new Student5();
    }
}  
Run Code Online (Sandbox Code Playgroud)

java static constructor static-variables

1
推荐指数
1
解决办法
6000
查看次数

"let"和"static let"有什么区别?

class Foo {
    let fooValue = 1
}

print(Foo.fooValue) // not work


class Bar {
    static let barValue = 1
}

print(Bar.barValue) // work; print "1"
Run Code Online (Sandbox Code Playgroud)

为什么?我希望这个Foo例子能够工作,因为值fooValue是在编译时知道的常量,值和内存地址.但我需要使用关键字static来工作.

static-variables swift

1
推荐指数
1
解决办法
4577
查看次数

静态变量未初始化为给定值

我有一个静态的“init”变量,可以在启动时运行一次函数(RTOS),但它似乎初始化为一个随机值。如果我删除静态标签,一切正常。(除了它每次通过都运行 init 函数的明显问题。)任何人都可以更深入地了解为什么这不起作用,或者可能是实现这一目标的更好方法?

示例代码:

void ManageStructures()
{
    // Variable declarations/definitions
    static uint8_t StructInitialized;
    // Have also tried "static uint8_t StructInitialized = 0", neither worked

    // Function prototypes
    void InitStruct();

    if (!StructInitialized)
    {
        StructInitialized= 1;
        InitStruct();
    }
    Test = StructInitialized;
Run Code Online (Sandbox Code Playgroud)

编辑:对于缺乏信息,我深表歉意。这是针对一家公司的,我正在努力遵守我们的公共信息政策。MCU是STM32F7系列,使用“Ac6 STM32 MCU GCC”工具链。我不太精通编译器操作,所以我可能需要更长时间才能找到编译器或 makefile 相关问题的答案。

编辑:很明显,这是编译器或链接器脚本的问题,而不是我的代码。话虽如此,但在找到这个问题的根源之前,我需要更多地了解工具链、链接器脚本和编译器,这一点也变得非常清楚。一旦我足够熟悉可以提供有价值的反馈或自己回答这个问题,我就会回到这个问题。谢谢大家的反馈和指导!

c embedded static-variables variable-initialization

1
推荐指数
1
解决办法
136
查看次数