我有一组静态类方法.我还在存储在对象变量$ 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中获取关键字列表并将其与所有单词的搜索结果(如标题数组)匹配的最快方法是什么?
例如,如果我的关键词短语是" 精美皮鞋 ",那么以下标题就是匹配...
......虽然这些不匹配:
我想有一些关于数组函数或RegEx(正则表达式)的技巧可以快速实现.
我如何确定自版本2.7以来每个版本的WordPress附带的jQuery版本?是否有一个日志保存在这个?因为作为插件开发人员,我可能需要依赖可能在旧版WordPress中无法使用的功能.
在使用cpanel管理的基于Linux的共享主机上,如果我知道我的cpanel登录信息和/或FTP信息,是否有一种编程方式可以为我的网站创建可靠的插件域?
注意:在这种情况下对PHP和cpanel感兴趣.
你能解释为什么我想在PHP5中的某些类变量和方法上使用"protected"与"public"或"private"的原因是什么?我还没有找到一个案例,我认为我需要"受保护",并根据意图选择"公开"或"私人".即使在团队合作中,我仍然没有找到一个案例(基于我迄今为止的知识)为什么"受保护"对于类变量和方法是必要的.
有没有理由为什么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上工作,请分享您的所作所为.
在Gedit中,我可以在当前文档中添加"php -l"的外部工具,如果我安装了PHP命令行,它将语法检查文档.有没有办法用Sublime Text Editor做到这一点?(注意,我有一台Mac,它安装了PHP CLI.)
我想我必须将代码片段粘贴到Sublime插件中,对吧?
在Ubuntu Linux上,我可以使用Glade应用程序创建一个Hello World对话框.现在我如何让D编程语言显示它?
对于语言重定向,我们当前在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,Google Sheets API v4文档中不清楚如何在现有电子表格中创建新工作表(也称为"制表符").
奇怪的是,我可以通过API资源管理器使用batchUpdate来完成它,但他们没有解释如何在PHP中执行此操作.
php ×8
.htaccess ×1
add-on ×1
apache ×1
arrays ×1
cpanel ×1
d ×1
dns ×1
email ×1
glade ×1
google-api ×1
gtkd ×1
jquery ×1
keyword ×1
linux ×1
mod-rewrite ×1
oop ×1
protected ×1
redirect ×1
regex ×1
static ×1
sublimetext2 ×1
swiftmailer ×1
ubuntu-14.04 ×1
wordpress ×1