给定一个类class RandomName extends CommonAppBase {}是否有任何方法可以自动创建任何类扩展的实例CommonAppBase而无需显式使用new?
通常,每个PHP文件只有一个类定义.并且追加new RandomName()到所有文件的末尾是我想要消除的.扩展类没有构造函数; 只CommonAppBase调用构造函数.CommonAppBase->__construct()启动其余的应用程序执行.
奇怪的问题,但如果有人知道解决方案会很好.
继续下面的评论.执行实例化的代码不在类文件中.类文件就是这样,我想要一些其他代码include('random.class.php')并实例化CommonAppBase那里的扩展类.
对于任何不确定我是什么的人,我的hackish回答做我想要的,但不是以最认真的方式.
在此先感谢,艾登
(顺便说一句,我的PHP版本是5.3.2)请说明任何答案的版本限制.
以下所有内容都可以附加到文件(通过php.ini或Apache),以自动启动特定父类的类.
第一(感谢dnagirl)
$ca = get_declared_classes();
foreach($ca as $c){
if(is_subclass_of($c, 'MyBaseClass')){
$inst = new $c();
}
}
Run Code Online (Sandbox Code Playgroud)
和(接受的答案,作为最接近的答案)
auto_loader();
function auto_loader() {
// Get classes with parent MyBaseClass
$classes = array_filter(get_declared_classes(), function($class){
return get_parent_class($class) === 'MyBaseClass';
});
// Instantiate the first one
if (isset($classes[0])) {
$inst = new …Run Code Online (Sandbox Code Playgroud) 如何使用 ANSI 转义格式化文本?
喜欢使事情斜体或粗体,也许删除线和超级脚本。
如果我想要一个Eloquent Model类为了实现一个接口而拥有setter和getter,那么下面的方法是否有意义,或者是否有一个"laravel"方法来解决问题
class MyClass extends Model implements someContract
{
public function setFoo($value) {
parent::__set('foo', $value);
return $this;
}
public function getFoo() {
return parent::__get('foo');
}
}
Run Code Online (Sandbox Code Playgroud) 我最近发现了一个名为“文本片段”的新 Chrome 功能,该功能允许链接直接指向 URL 中的特定文本并突出显示它。例如:
https://www.nytimes.com/#:~:text=杂志
但是,如果我指向出现多次的作品,则只有第一个实例会突出显示。
有什么方法可以要求它突出显示给定字符串的所有出现位置吗?
每次在 Postgres 表中进行插入时,我都需要使用触发器和 HTTP GET 或 POST 来 ping 一些 HTTP 服务吗?
有没有简单的方法可以通过标准 PostgreSQL 安装来实现这一点?
如果没有,有什么办法可以用额外的库来做到这一点吗?
在golang(以及bash脚本)中如果我更改当前工作目录(使用os.Chdir)它可以工作,但是当程序终止时,工作目录将重置为程序启动时的位置.
这是有道理的,但我想要做的是一个智能的磁盘导航器(类似于我们古老而深受喜爱的ncd,"Norton Change Directory").
如何告诉二进制文件(或启动它的shell,或其他什么)不要重置为以前的工作路径?
我想完全从Go二进制文件中实现,不需要修改.bashrc或.zshrc(为了便携性)
我想让MongoDB动态地为我正在插入的文档的一个字段赋值.例如:MongoDB服务器的当前时间就像NOW()在MySQL中一样.
我试过这个:
c := mongoSession.DB("myapp").C("instances")
rand.Seed(time.Now().UnixNano())
err := c.Insert(
struct{Serial, Priority, Url, LastSeen interface{}}{
Url: getInformedHost() + ":" + getRunningPortString(),
Priority: rand.Int(),
LastSeen: mongoNow() }
)
checkError(err, "Could not register on MongoDB server.", 3)
Run Code Online (Sandbox Code Playgroud)
我有这个辅助功能:
func mongoNow() bson.JavaScript {
return bson.JavaScript{Code:
"(new Date()).ISODate('YYYY-MM-DD hh:mm:ss')"}
}
Run Code Online (Sandbox Code Playgroud)
LastSeen字段存储为脚本而不是评估:
[_id] => MongoId Object (
[$id] => 502d6f984eaead30a134fa10
)
[priority] => 1694546828
[url] => 127.0.0.1:8080
[lastseen] => MongoCode Object (
[code] => (new Date()).ISODate('YYYY-MM-DD hh:mm:ss')
[scope] => Array (
)
)
Run Code Online (Sandbox Code Playgroud)
如何评估一些javascript而不是插入?
Update: The question title can be misleading. This was not Go's fault at all.
See the first comment or the accepted answer.
Run Code Online (Sandbox Code Playgroud)
以下代码(好吧,几乎相同)计算Linux下的页面视图,但在Windows下计算它们是双倍的.
有人可以找出原因吗?
package main
import (
"fmt"
"http"
)
func main() {
println("Running")
http.HandleFunc("/", makeHomeHandler())
http.ListenAndServe(":8080", nil)
}
// this version compiles and run OK under the Linux version of Golang
func makeHomeHandler() func(c *http.Conn, r *http.Request) {
views := 1
return func(c *http.Conn, r *http.Request) {
fmt.Fprintf(c, "Counting %s, %d so far.", r.URL.Path[1:], views)
views++
}
} …Run Code Online (Sandbox Code Playgroud)