GVKun编程网logo

PHP 中 new static 和 new self 的区别(php this和self的区别)

1

在本文中,我们将带你了解PHP中newstatic和newself的区别在这篇文章中,我们将为您详细介绍PHP中newstatic和newself的区别的方方面面,并解答phpthis和self的区别

在本文中,我们将带你了解PHP 中 new static 和 new self 的区别在这篇文章中,我们将为您详细介绍PHP 中 new static 和 new self 的区别的方方面面,并解答php this和self的区别常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的5-2 Java 中的 static 使用之静态变量 ;;Java 中的 static 使用之静态方法;;Java 中的 static 使用之静态初始化块、app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;、C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化、Celery Worker 错误:self.buffer = mmap.mmap(self.fd, self.size) FileNotFoundError:[Errno 2] 没有那个文件或目录

本文目录一览:

PHP 中 new static 和 new self 的区别(php this和self的区别)

PHP 中 new static 和 new self 的区别(php this和self的区别)

        今天老大在公司 问了一下  new static  和 new self 的区别 公司十个程序 竟然没有一个回答上来 后面画面自补 。。。

本屌丝回家后 就百度了解了下 这二者区别 :

使用 self:: 或者 __CLASS__ 对当前类的静态引用,取决于定义当前方法所在的类:

使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的static,

立即学习“PHP免费学习笔记(深入)”;

然后通过子类直接/间接用到了这个static, 这个static指的就是这个子类, 所以说static和$this很像, 但是static可以用于静态方法和属性等.

请看列子

 

<span>php
</span><span>class</span><span> Person
{
    </span><span>public</span><span>static</span><span>function</span><span> name()
    {
        </span><span>echo</span> "xiaosan"<span>;
    }
    </span><span>public</span><span>static</span><span>function</span><span> callself()
    {
        self</span>::<span>name();
    }

    </span><span>public</span><span>static</span><span>function</span><span> callstatic()
    {
        </span><span>static</span>::<span>name();
    }
}

</span><span>class</span> Man <span>extends</span><span> Person
{
    </span><span>public</span><span>static</span><span>function</span><span> name()
    {
        </span><span>echo</span> "gaojin"<span>;
    }
}
Man</span>::name();  <span>//</span><span> output: gaojin</span>Person::callself();  <span>//</span><span> output: xiaosan</span>Person::callstatic();  <span>//</span><span> output:gaojin</span>?&gt;
登录后复制

  小编继续学习中 

以上就介绍了PHP 中 new static 和 new self 的区别,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

5-2 Java 中的 static 使用之静态变量 ;;Java 中的 static 使用之静态方法;;Java 中的 static 使用之静态初始化块

5-2 Java 中的 static 使用之静态变量 ;;Java 中的 static 使用之静态方法;;Java 中的 static 使用之静态初始化块

1.Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问

使用 static 可以修饰变量、方法和代码块。

    

2. 与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:

         

注意:

1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

    

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:

          

3.Java 中的 static 使用之静态初始化块

Java 中可以通过初始化块进行数据赋值。如:

   在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量  

 

 

 

 

 

 

app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;

app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;

如何解决app.use(express.static(__dirname + ''/public'')) 和 app.use(express.static(''public'')) 的区别;?

不知道下面两个是不是一样的。

(1) app.use(express.static(__dirname + "/public"));
(2) app.use(express.static("public"));

因为我认为只要 (2) 存在于 express 服务器中,浏览器就可以提供位于根路径中的 public 文件夹,而 __dirname 不是必需的。

但是,有时 (2) 不起作用而 (1) 起作用,例如我在基于 Route parameters 的动态路由中呈现 ejs 文件。

它们之间到底有什么区别?

解决方法

首先__dirname有3个用法,你可以查看documentation:

制作新目录

要在 index.js 文件中创建一个新目录,请插入 __dirname 作为 path.join() 的第一个参数,并将新目录的名称作为第二个参数插入

const fs = require(''fs'');
const path = require(''path'');
const dirPath = path.join(__dirname,''/pictures'');

fs.mkdirSync(dirPath);

指向目录

另一个独特的功能是它能够指向目录。在你的 index.js 文件中,声明一个变量并传入 __dirname 的值作为 path.join() 的第一个参数,你的包含静态文件的目录作为第二个参数

express.static(path.join(__dirname,''/public''));

将文件添加到目录

您也可以将文件添加到现有目录。在你的 index.js 文件,声明一个变量并包含 __dirname 作为第一个参数 以及您要添加为第二个的文件 如果您运行 express 应用程序 从另一个目录(不是根目录),使用绝对路径更安全 在您要提供的目录中,使用 __dirname

const fs = require(''fs'');
const path = require(''path'');
const filePath = path.join(__dirname,''/pictures'');

fs.openSync(filePath,''hello.jpeg'');

根据您的示例,我们不能使用 __dirname 但如果您从另一个目录运行 express 应用程序,则使用您想要提供服务的目录的绝对路径会更安全

app.use(express.static(__dirname + "/public"));

C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化

C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化

C++类有几种类型的数据成员:普通类型、常量(const)、静态(static)、静态常量(static const)。这里分别探讨以下他们在C++11之前和之后的初始化方式。

c++11之前版本的初始化

在C++11之前常规的数据成员变量只能在构造函数里和初始化列表里进行初始化。const类型的成员变量只能在初始化列表里并且必须在这里进行初始化。static类型只能在类外进行初始化。static const类型除了整型数可以在类内初始化,其他的只能在类外初始化。代码如下:

class A
{
public:
	A();
	~A();

	//int m_n1 = 10;                // 错误	1	error C2864: “A::m_n1”: 只有静态常量整型数据成员才可以在类中初始化
	int m_n2;
	int m_n3;
	//const int m_nConst_1 = 10;   // 错误	3	error C2864: “A::m_nConst_1”: 只有静态常量整型数据成员才可以在类中初始化

	const int m_nConst_2;
	const int m_nConst_3;
	const int m_nConst_4;

	// static int m_nStatic_1 = 10; // 错误	1	error C2864: “A::m_nStatic_1”: 只有静态常量整型数据成员才可以在类中初始化
	static int m_nStatic_2;
	static int m_nStatic_3;

	// static double m_dStatic_1 = 10.1;// 带有类内初始化表达式的静态数据成员,必须具有不可变的常量整形类型,或必须被指定为“内联”
	static double m_dStatic_2;
	static double m_dStatic_3;

	static const int m_nStaticConst_1 = 10;
	static const int m_nStaticConst_2;
	const static int m_nStaticConst_3;

	//static const double m_dStaticConst_1 = 10; // 错误	1	error C2864: “A::m_dStaticConst_1”: 只有静态常量整型数据成员才可以在类中初始化

	static const double m_dStaticConst_2;
	static const double m_dStaticConst_3;
};

源文件如下:

#include "Initialize.h"

int A::m_nStatic_3 = 13; //类外初始化静态变量
// int A::m_nConst_4 = 13; 非静态数据成员不能在其类的外部定义
const int A::m_nStaticConst_3 = 12; // 类外初始化静态常量

A::A():m_n3(12),m_nConst_2(11),m_nConst_3(12),m_nConst_4(13)//,m_dStaticConst_2(11.0)//, m_nStaticConst_3(12)// m_nStatic_3(13)// 不是类"A"的非静态数据成员或基类
{// 错误	4	error C2758: “A::m_nConst_1”: 必须在构造函数基/成员初始值设定项列表中初始化

	m_n2 = 11;
	// m_nConst_3 = 12;          // 表达式必须是可修改的左值
	// m_nStatic_2 = 12;         // 无法解析外部符号
	// m_dStatic_2 = 11.0;       // 无法解析外部符号
	// m_nStaticConst_2 = 11;    // 表达式必须是可修改的左值
	// m_dStaticConst_2 = 11.0;  // 表达式必须是可修改的左值
}

A::~A()
{

}

如下表: | type |normal | const | static | static const | | -- | -- | -- | -- | --| | 在声明时初始化 | x | x | x | x(只有静态常量整型才可以) | | 初始化列表初始化 | √ | √ | x | x | | 构造函数里初始化 | √ | x | x | x | | 类外初始化 | x | x | √ | √ |

C++11中初始化

在C++11中加入了类内初始化,常规的数据成员变量能在类内、构造函数里和初始化列表里进行初始化。const类型的成员变量只能在初始化列表里并且必须在这里进行初始化。static类型只能在类外进行初始化。static const类型除了整型数可以在类内初始化,其他的只能在类外初始化。代码如下:

class A
{
public:
	A();
	~A();

	int m_n1 = 10;
	int m_n2;
	int m_n3;
	double m_d1 = 10.0;

	const int m_nConst_1 = 10;
	const int m_nConst_2;
	const int m_nConst_3;
	const int m_nConst_4;

	// static int m_nStatic_1 = 10; // 带有类内初始化表达式的静态数据成员,必须具有不可变的常量整形类型,或必须被指定为“内联”
	static int m_nStatic_2;
	static int m_nStatic_3;

	// static double m_dStatic_1 = 10.1;// 带有类内初始化表达式的静态数据成员,必须具有不可变的常量整形类型,或必须被指定为“内联”
	static double m_dStatic_2;
	static double m_dStatic_3;

	static const int m_nStaticConst_1 = 10;
	static const int m_nStaticConst_2;
	static const int m_nStaticConst_3;

	//static const double m_dStaticConst_1 = 10; // E1591	"const double" 类型的成员不能包含类内初始值设定项
	static const double m_dStaticConst_2;
	static const double m_dStaticConst_3;
};

源文件代码如下:

int A::m_nStatic_3 = 13;
// int A::m_nConst_4 = 13; 非静态数据成员不能在其类的外部定义
const double A::m_dStaticConst_2 = 12.0;
A::A():m_n3(12),m_nConst_2(11),m_nConst_3(12),m_nConst_4(13)//, m_nStaticConst_3(12)// m_nStatic_3(13)// 不是类"A"的非静态数据成员或基类
{
	m_n2 = 11;
	// m_nConst_3 = 12;          // 表达式必须是可修改的左值
	// m_nStatic_2 = 12;         // 无法解析外部符号
	// m_dStatic_2 = 11.0;       // 无法解析外部符号
	// m_nStaticConst_2 = 11;    // 表达式必须是可修改的左值
	// m_dStaticConst_2 = 11.0;  // 表达式必须是可修改的左值
}

A::~A()
{

}

如下表:

type normal const static static const
在声明时初始化 x x x(只有静态常量整型才可以)
初始化列表初始化 x x
构造函数里初始化 x x x
类外初始化 x x

Celery Worker 错误:self.buffer = mmap.mmap(self.fd, self.size) FileNotFoundError:[Errno 2] 没有那个文件或目录

Celery Worker 错误:self.buffer = mmap.mmap(self.fd, self.size) FileNotFoundError:[Errno 2] 没有那个文件或目录

如何解决Celery Worker 错误:self.buffer = mmap.mmap(self.fd, self.size) FileNotFoundError:[Errno 2] 没有那个文件或目录?

我得到 self.buffer = mmap.mmap(self.fd,self.size) FileNotFoundError: [Errno 2] 在 Windows 上用 docker 运行 celery 时没有这样的文件或目录错误。它在 mac 上完美运行。

dvu-celeryworker    | [2021-03-26 11:08:20,286: CRITICAL/MainProcess] Unrecoverable error: FileNotFoundError(2,''No such file or directory'')
dvu-celeryworker    | Traceback (most recent call last):
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/worker/worker.py",line 208,in start
dvu-celeryworker    |     self.blueprint.start(self)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py",line 119,in start
dvu-celeryworker    |     step.start(parent)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py",line 369,in start
dvu-celeryworker    |     return self.obj.start()
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/concurrency/base.py",line 132,in start
dvu-celeryworker    |     self.on_start()
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/concurrency/prefork.py",line 111,in on_start
dvu-celeryworker    |     P = self._pool = Pool(processes=self.limit,dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/concurrency/asynpool.py",line 486,in __init__
dvu-celeryworker    |     super(AsynPool,self).__init__(processes,*args,**kwargs)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/pool.py",line 1046,in __init__
dvu-celeryworker    |     self._create_worker_process(i)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/celery/concurrency/asynpool.py",line 503,in _create_worker_process
dvu-celeryworker    |     return super(AsynPool,self)._create_worker_process(i)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/pool.py",line 1142,in _create_worker_process
dvu-celeryworker    |     on_ready_counter = self._ctx.Value(''i'')
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/context.py",line 181,in Value
dvu-celeryworker    |     return Value(typecode_or_type,lock=lock,dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/sharedctypes.py",line 78,in Value
dvu-celeryworker    |     obj = RawValue(typecode_or_type,*args)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/sharedctypes.py",line 46,in RawValue
dvu-celeryworker    |     obj = _new_value(type_)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/sharedctypes.py",line 37,in _new_value
dvu-celeryworker    |     wrapper = heap.BufferWrapper(size)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/heap.py",line 274,in __init__
dvu-celeryworker    |     block = BufferWrapper._heap.malloc(size)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/heap.py",line 255,in malloc
dvu-celeryworker    |     (arena,start,stop) = self._malloc(size)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/heap.py",line 152,in _malloc
dvu-celeryworker    |     arena = Arena(length)
dvu-celeryworker    |   File "/usr/local/lib/python3.8/site-packages/billiard/heap.py",line 104,in __init__
dvu-celeryworker    |     self.buffer = mmap.mmap(self.fd,self.size)
dvu-celeryworker    | FileNotFoundError: [Errno 2] No such file or directory

请帮忙。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

我们今天的关于PHP 中 new static 和 new self 的区别php this和self的区别的分享就到这里,谢谢您的阅读,如果想了解更多关于5-2 Java 中的 static 使用之静态变量 ;;Java 中的 static 使用之静态方法;;Java 中的 static 使用之静态初始化块、app.use(express.static(__dirname + '/public')) 和 app.use(express.static('public')) 的区别;、C++中类中常规变量、const、static、static const(const static)成员变量的声明和初始化、Celery Worker 错误:self.buffer = mmap.mmap(self.fd, self.size) FileNotFoundError:[Errno 2] 没有那个文件或目录的相关信息,可以在本站进行搜索。

本文标签: