我一直在搜索这个问题,要么我没有使用正确的搜索条件,要么我错过了一些东西.
我试图弄清楚是否可以使用PHPdoc来定义对象返回的变量.
说我有以下课程:
class SomeClass {
public function staffDetails($id){
$object = new stdClass();
$object->type = "person";
$object->name = "dave";
$object->age = "46";
return $object;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,定义输入参数很容易.
/**
* Get Staff Member Details
*
* @param string $id staff id number
*
* @return object
*/
class SomeClass {
public function staffDetails($id){
$object = new stdClass();
$object->type = "person";
$object->name = "dave";
$object->age = "46";
return $object;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是是否有类似的事情来定义相关方法返回的对象的输出变量,以便另一个程序员不必打开这个类并手动查看方法以查看返回对象返回的内容?
我在我的Windows系统上安装了php5,并尝试使用命令行控制台执行以下脚本:
<?php
// load in credentials
$creds = parse_ini_file('/etc/aws.conf');
// Define query string keys/values
$params = array(
'Action' => 'DescribeAvailabilityZones',
'AWSAccessKeyId' => $creds['access_key'],
'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),
'Version' => '2008-05-05',
'ZoneName.0' => 'us-east-1a',
'ZoneName.1' => 'us-east-1b',
'ZoneName.2' => 'us-east-1c',
'SignatureVersion' => 2,
'SignatureMethod' => 'HmacSHA256'
);
// See docs
// http://tr.im/jbjd
uksort($params, 'strnatcmp');
$qstr = '';
foreach ($params as $key => $val) {
$qstr .= "&{$key}=".rawurlencode($val);
}
$qstr = substr($qstr, 1);
// Signature Version 2
$str = "GET\n"
. "ec2.amazonaws.com\n"
. …
Run Code Online (Sandbox Code Playgroud) 关于在另一个类中使用类对象,最佳做法是什么?要在类_construct语句中传递类对象还是创建一个新的类对象?
例1:
class Foo {
private $bar;
public function __construct($bar){
$this->bar = $bar;
}
}
Run Code Online (Sandbox Code Playgroud)
或者示例2:
class Foo {
private $bar;
public function __construct(){
$this->bar= NEW bar;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道显然已经理所当然地认为类文件必须已经包含在其他地方,并且在第一个实例中,这种类型的类对象需要已经存在,但我想知道每个方法的优点是什么,因为我有很多类需要编写使用数据库对象的类,我需要最好的方法将它传递给类.还有第三种选择比这两种选择更好吗?
根据我的理解,第一个的优点可能是少一些编码行,而在DB的情况下,没有创建新的连接.第二个可能会更好,但因为它更自包含?无论如何我以为我会问专家.
我不明白这个"DI容器"是如何使用的.官方网站上显示的例子告诉我什么:http://pimple.sensiolabs.org
基本上我有一个简单的站点,它由一组类组成:DB类,Cache类,User类和一些处理内容类型的类.
所有这些类都像是在Pimple中提到的"服务",每个服务都应该能够调用另一个服务.现在我正在实例化主类中的服务,我使用它像单例一样在其他类之间共享服务.
从我读到的内容来看,Pimple确实做到了这一点,但我该如何使用呢?:■
我正在编写一个需要多种身份验证形式的应用程序.
应用程序需要支持对Active Directory的身份验证,但如果用户不在Active Directory中,则能够故障回复到SQL成员资格提供程序.我们可以根据提供的用户名处理代码中SQL提供程序的失败,因为用户名将是与Active Directory用户名不同的格式.
这甚至可能吗?我的意思是,我可以使用成员资格并同时使用ActiveDirectoryMembershipProvider和SqlMembershipProvider,还是我必须自己动手?
另一个额外增加的复杂性是我希望自动将基于Windows身份验证的内部用户验证回AD,但对不在我们内部网络上的用户或使用SQL提供程序的用户使用表单身份验证.
这些很可能是单独的服务器,一个是内部服务器,另一个是外部服务器,因此我有很多计划要弄清楚数据复制,以及如果AD用户访问外部服务器等,我将如何对其进行身份验证.
当我开始走这条路时,我想知道那里有什么想法.如果没有我自己的想法,我想要做什么,或者有没有办法将它们融合在一起?
谢谢回复.
我最初问的原因是因为我能够在大约7年前使用IIS进行身份验证,然后将凭据传递回Lotus Domino Server Web App,从而使这个特定的senerio工作.如果用户未通过Windows身份验证/ ISS进行身份验证,则Domino将处理身份验证.这就是我在这里要做的事情,但实在想不出让它在IIS中运行的方法.
至于你的其他答复,我认为你正在采取我需要采取的方式.我已经想到了这一点,并把它扔在了我脑海里.无论如何,应用程序在两台服务器上会有所不同,因为无论如何都会限制对外部服务器上的数据的访问.事实上,这种情况将会有所不同,我可能只将它们视为两个应用程序,从而无需在同一个应用程序中使用两种类型的身份验证.
我正在尝试为外部服务器编写自己的身份验证/登录窗口,如果用户尝试使用外部服务器上的AD凭据登录,我将能够检测到并将其重定向到内部服务器.如果他们不在本地网络或VPN上,他们将无法访问.这部分仍然有一些思考过程,所以我不确定.
另外一个想法 - 是否有一种方法可以将足够的AD拉入SQL数据库,以允许我使用其AD凭据从外部服务器对SQL数据库的用户进行身份验证,而不会产生任何安全问题?我希望我能清楚地输入我在想的内容......
再次感谢!
蒂姆
如果情况并非如此,那对我来说是有意义的,因为它可能会导致编译器错误.
__call()
在对象上下文中调用不可访问的方法时触发.
我发现了这个说法
不要使用"忘记密码"功能.但如果必须,请确保您仅向实际用户提供信息,例如使用合法用户过去提供的电子邮件地址或质询问题; 在提供正确的密码之前,不允许当前用户更改此身份信息.
有人可以澄清为什么忘记密码会有风险吗?我计划通过向用户发送电子邮件中的链接以重置密码来处理它,但不会向他们提供旧密码(因为它仍然是哈希值),并且在重置时不会要求他们提供旧密码.我的做法有风险吗?
寻找一个PHP函数(非jQuery或wpautop修改)方法<p></p>
从wordpress中删除.
我试过这个,但它不起作用:
function cleanup_shortcode_fix($content) {
$array = array (
'<p>[' => '[',
']</p>' => ']',
']<br />' => ']',
']<br>' => ']'
);
$content = strtr($content, $array);
return $content;
}
add_filter('the_content', 'cleanup_shortcode_fix');
Run Code Online (Sandbox Code Playgroud) 运行nginx 1.9.*/PHP 7.0.*(但5.6.*中的完全相同的行为)
尝试在维护期间优雅地停止PHP-FPM/nginx组合以关闭节点.为此,我将SIGQUIT发送到php-fpm,它应该提供正常的关闭.
为了测试这个,我制作了一个愚蠢的剧本
<?php sleep(5); echo 'done';
Run Code Online (Sandbox Code Playgroud)
使用以下卷曲进行本地测试
curl -I x.x.x.x:8080
Run Code Online (Sandbox Code Playgroud)
通常产生输出:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 12 Apr 2016 04:48:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Run Code Online (Sandbox Code Playgroud)
期望:在任何正在进行的请求中,当请求正常关闭时,当前请求应该完成,但任何其他请求都将失败.
不幸的是,当我尝试触发此行为时,通过向PHP-FPM主进程发送SIGQUIT(http://manpages.ubuntu.com/manpages/precise/man8/php5-fpm.8.html):
kill -s SIGQUIT $FPMPID
Run Code Online (Sandbox Code Playgroud)
连接立即下降,产生一个ngnix 502
HTTP/1.1 502 Bad Gateway
Server: nginx
Date: Tue, 12 Apr 2016 04:48:07 GMT
Content-Type: text/html
Content-Length: 166
Connection: close
Run Code Online (Sandbox Code Playgroud)
有什么建议?我希望尽可能地使这个系统尽可能无缝.谢谢!