小编Vol*_*ike的帖子

PHP:如何将现有数据库连接传递给静态类方法?

我有一组静态类方法.我还在存储在对象变量$ DB中的脚本中存在现有数据库连接.如何调用这些静态类方法并让它们使用该$ DB对象而不必每次都将这个变量作为类方法的参数传递给它们?

例如,现在我不得不使用全局,不幸的是:

class Foo {
  public static function Bar() {
    global $DB;
    return $DB->DSN_STRING;
  }
}
Run Code Online (Sandbox Code Playgroud)

这就像我需要我的静态类用一个例程来调用自己,该例程以某种方式获得$ DB连接而不必重新建立它.注意我不能将它注入静态类,因为它没有实例化.

当然,如果我从静态类切换到常规类并实例化我的$ Foo对象,问题就解决了.然后,我可以将$ DB var注入公共变量的设置.或者添加一个公共方法来接收$ DB var,然后设置$ Foo对象的私有var.或者,让类构造函数接受$ DB var并设置$ Foo对象的私有var.但是所有3种技术都要求我从静态类切换到常规类.

有些人提到了一种称为注册表模式或单例模式的东西(我认为它是一样的吗?不确定).这是我需要有效解决这个问题的吗?

最重要的是,我避免称之为"全球$ DB",因为人们对此感到愤怒.

php oop static global-variables

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

最快的PHP例程来匹配单词

PHP中获取关键字列表并将其与所有单词的搜索结果(如标题数组)匹配的最快方法是什么?

例如,如果我的关键词短语是" 精美皮鞋 ",那么以下标题就是匹配...

  • 得到一些真正伟大的皮鞋
  • 皮鞋
  • 美好的一天!那些是很酷的皮鞋!
  • 鞋子,皮革制成,可以很棒

......虽然这些匹配:

  • 今日特卖皮鞋!
  • 你会爱上这些皮鞋大大
  • 伟大的鞋子不便宜

我想有一些关于数组函数或RegEx(正则表达式)的技巧可以快速实现.

php regex arrays keyword

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

用WordPress确定jQuery的版本?

我如何确定自版本2.7以来每个版本的WordPress附带的jQuery版本?是否有一个日志保存在这个?因为作为插件开发人员,我可能需要依赖可能在旧版WordPress中无法使用的功能.

wordpress jquery

5
推荐指数
2
解决办法
4525
查看次数

如何以编程方式在共享主机方案上创建插件域

在使用cpanel管理的基于Linux的共享主机上,如果我知道我的cpanel登录信息和/或FTP信息,是否有一种编程方式可以为我的网站创建可靠的插件域?

注意:在这种情况下对PHP和cpanel感兴趣.

php dns shared-hosting add-on cpanel

5
推荐指数
2
解决办法
3906
查看次数

PHP5受保护变量背后的推理

你能解释为什么我想在PHP5中的某些类变量和方法上使用"protected"与"public"或"private"的原因是什么?我还没有找到一个案例,我认为我需要"受保护",并根据意图选择"公开"或"私人".即使在团队合作中,我仍然没有找到一个案例(基于我迄今为止的知识)为什么"受保护"对于类变量和方法是必要的.

php protected

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

HostGator不会通过PHP SwiftMail API发送邮件

有没有理由为什么SwiftMail API for PHP不能在HostGator上运行?他们的技术支持说使用mail()命令,并且到端口25的套接字连接不会像他们的共享主机方案那样工作.我抱怨说,当你谷歌如何发送邮件附件(),人们告诉你使用SwiftMail.我需要通过电子邮件发送文件附件.

我的代码在A2Hosting上运行得很好,但不是HostGator.在API中,我送本地主机端口25,不认证,不使用SSL,并使用它在该主机上存在一个有效的电子邮件地址(假装这是example.com) - noreply@example.com.

我得到的错误是:

Warning: fsockopen() [function.fsockopen]: unable to connect to localhost:25 (Connection refused) in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php on line 243

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host localhost [Connection refused #111]' in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php:245 Stack trace: #0 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php(80): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/AbstractSmtpTransport.php(111): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Mailer.php(84): Swift_Transport_AbstractSmtpTransport->start() #3 /home/user/public_html/mywebsite/mailer.php(34): Swift_Mailer->send(Object(Swift_Message)) #4 /home/user/public_html/mywebsite/mailer.php(146): Mailer->sendMail() #5 {main} thrown in /home/user/public_html/mywebsite/addons/swiftmail-4.0.3/lib/classes/Swift/Transport/StreamBuffer.php on line 245
Run Code Online (Sandbox Code Playgroud)

如果您已经使用SwiftMail API在HostGator上工作,请分享您的所作所为.

php email swiftmailer

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

PHP语法检查Sublime文本编辑器

在Gedit中,我可以在当前文档中添加"php -l"的外部工具,如果我安装了PHP命令行,它将语法检查文档.有没有办法用Sublime Text Editor做到这一点?(注意,我有一台Mac,它安装了PHP CLI.)

我想我必须将代码片段粘贴到Sublime插件中,对吧?

php syntax-checking sublimetext2 sublime-text-plugin

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

如何使用Glade/GtkD和D编程语言显示Hello World

在Ubuntu Linux上,我可以使用Glade应用程序创建一个Hello World对话框.现在我如何让D编程语言显示它?

linux d glade gtkd ubuntu-14.04

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

如何使用Apache/mod_rewrite基于Accept-Language重定向

对于语言重定向,我们当前在Web根目录中创建包含index.php文件的文件夹,该文件检查HTTP_ACCEPT_LANGUAGE服务器变量.例如,为网址www.example.com/press/

/var/www/site/press/index.php:

<?php
  if ($_SERVER["HTTP_ACCEPT_LANGUAGE"] == "en")
    header("location: ../press_en.php");
  else 
    header("location: ../press_de.php");
?>
Run Code Online (Sandbox Code Playgroud)

随着网站的增长,我们现在有很多这样的文件夹.我试图通过将重定向移动到单个.htaccess文件来清理它:

RewriteEngine on

# Set the base path here
RewriteBase /path/to/site/

# The 'Accept-Language' header starts with 'en'
RewriteCond %{HTTP:Accept-Language} (^en) [NC]

# EN redirects
RewriteRule press(/?)$   press_en.php [L,R]

# DE redirects (for all languages not EN)
RewriteRule press(/?)$   press_de.php [L,R]
Run Code Online (Sandbox Code Playgroud)

这个想法与php文件相同,但它不起作用.我在Firefox首选项中尝试了所有可能的语言设置/命令,并检查了标题是否正确,但它始终为press_de.php文件提供服务.

我做错了什么,或者有更好的方法吗?(不包括内容协商/多视图或任何需要重命名文件的内容,目前这不是一个选项).

php apache .htaccess mod-rewrite redirect

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

如何使用Google表格API v4使用PHP在电子表格中创建新工作表或选项卡

使用PHP,Google Sheets API v4文档中不清楚如何在现有电子表格中创建新工作表(也称为"制表符").

奇怪的是,我可以通过API资源管理器使用batchUpdate来完成它,但他们没有解释如何在PHP中执行此操作.

php google-api google-sheets-api

4
推荐指数
2
解决办法
4783
查看次数