是否可以手动注册用户(使用artisan?),而不是通过auth注册页面?
我只需要几个用户帐户,并且想知道是否有一种方法可以创建这些帐户而不必设置注册控制器和视图。
如果我没有在PHP中捕获异常,则会在我的traceback.format_exc()
文件中获得带有堆栈跟踪的有用错误消息。 例如,如果我运行:
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
然后将其写入日志:
[2013年3月6日星期三10:35:32] [错误] [客户端86.146.145.175] PHP致命 错误:未捕获的异常“ Exception”,消息为“哦,不!” 在 /var/www/test.php:4\n堆栈跟踪:\ n#0 /var/www/test.php(7): foo()\ n#1 {main} \ n在第4行的/var/www/test.php中抛出
有时我想捕捉异常,但仍然记录该细节。 我在想类似的东西:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
其中traceback.format_exc()
将以与为未捕获的异常自动写入的格式基本相同的格式将某些内容写入错误日志-除了使用Caught exception
而不是PHP Fatal error: Uncaught exception
之外,在字面上可能完全相同。
是否有一个内置函数可以记录这样的异常信息,或将其捕获为字符串? 我正在想象类似于Python中的traceback.format_exc()
的东西。
有什么办法可以在PHP
中将json
转换为xml
? 我知道xml到json的可能性很大。
我想使用laravel发送确认电子邮件。laravel Mail :: send()函数似乎只接受系统上文件的路径。问题是我的邮件模板存储在数据库中,而不存储在系统上的文件中。
如何将纯内容传递给电子邮件?
例:
$content = "Hi,welcome user!";
Mail::send($content,$data,function(){});
我知道通常使用PHP CLI是因为没有时间限制,而主要使用PHP CLI是因为它没有使用Apache线程/进程。
但是,有什么方法可以为某些我不想拥有“无限时间”自由并且只想让那些脚本受到控制的脚本显式设置max_execution_time?
如果您认为在superuser.com上可以更好地回答此问题,并有权移动它,请执行此操作。 :)
编辑:我一直在谷歌搜索了一下,找到了正确的参数:
php -d max_execution_time=5 script.php
我已经对该主题进行了大量研究,并且自己实施了很多解决方案。
包括OpenID,Facebook Connect(使用旧的Rest API和新的Graph OAuth 2.0 API),使用twitter登录(据我所知,目前已升级为完全合格的OpenID),等等。
但是我仍然缺少的是完美的一站式解决方案。
在研究期间,我偶然发现了一些有趣的项目:
但是我不想依赖外部提供商,我也想要一个免费的解决方案,因此我在实施方面不受限制。
我还看到开发人员按照提供者的指示忠实地执行一项服务,并为所有内容设置模型和数据库表。
当然这可以工作,但是工作量很大,并且始终需要在应用程序中进行开发和更改等。
我正在寻找的是一个抽象层,它将所有服务都带到一个可以集成到我的网站中的标准。 出现新服务后,我只想添加一个处理该特定提供程序抽象的模型,以便将其无缝集成到我的应用程序中。
或者更好的是,找到一个我可以下载的现有解决方案。
理想情况下,此抽象服务应独立于我的应用程序托管,因此可以用于多个应用程序并独立升级。
上面的3个解决方案中的最后一个看起来很有希望。一切都只是移植到合成的OpenID,并且网站必须实现OpenID。
一段时间后,我找到了Django socialauth,这是Django Webframework的基于python的身份验证系统。 但是看起来它如上所述运行,我认为这是Stackoverflow使用的同一登录系统(或至少某些经过修改的fork ...)。
我下载了它并尝试进行设置,以查看是否可以将其设置为独立解决方案,但是我没有运气,因为我也不喜欢python。
我会喜欢基于PHP的解决方案。
因此,在这段长篇文章之后,我的问题恰恰是:
我希望这个问题不是太主观,谢谢。
更新:我得出的结论是,构建代理/包装器或您可能为Facebook所称的名称,以将其移植到OpenID以便使其成为OpenID端点/提供程序将是最佳选择。所以这正是我所做的。
请在下面查看我的答案。
我添加了赏金以获取反馈/讨论。 Maby我的方法不如我目前认为的好!
我正在使用cUrl和PHP向服务器发出请求(用于PayPal访问)
Paypal开发者网站从未提及使用PayPal访问API需要SSL证书,但是我用来请求令牌的代码如下:
$options = array(
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_VERBOSE => 1,
CURLOPT_POSTFIELDS => $postvals,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSLVERSION => 3
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
echo curl_error($ch);
此回显输出以下错误:
SSL certificate problem: unable to get local issuer certificate
我的问题是:
1)如果我只需要获取用户电子邮件,我是否需要SSL才能使用贝宝访问权限?
2)如果我不需要SSL,为什么会发生此错误?
PS:端点如下:[https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/tokenservice]
我可以在脚本中使用UTF-8字符。
实际上,可以使用变量名称,而函数包含Unicode字符。
还有mb_string扩展名,用于处理多字节字符串,但是在无数文章中,PHP因缺乏Unicode支持而受到批评。
我不明白 为什么说PHP不支持Unicode?
基本上,我需要的是一个脚本,该脚本在提供时间和时区时可以返回另一个时区中的时间。
我的主要问题是:
在Python / PHP / JavaScript中是否存在支持可变长度lookbehind-assertion的正则表达式实现?
/(?<!foo.*)bar/
如何编写具有相同含义但不使用lookbehind-assertion的正则表达式?
是否有可能在一天之内实现这种断言?
我认为情况要好得多。
更新:
(1)已经有一些正则表达式实现支持变长后向断言。
Python模块正则表达式(不是标准re
,而是其他regex
模块)支持此类断言(并具有许多其他出色功能)。
>>> import regex
>>> m = regex.search('(?<!foo.*)bar', 'f00bar')
>>> print m.group()
bar
>>> m = regex.search('(?<!foo.*)bar', 'foobar')
>>> print m
None
对于我来说,令Perl和Python不能使用的正则表达式感到非常惊讶。 也许,Perl也有“增强的正则表达式”实现吗?
(感谢MRAB +1)。
(2)现代正则表达式中有一个很酷的功能regex
。
这个符号意味着当您进行替换时(从我的角度来看,断言最有趣的用例是替换),在regex
之前找到的所有字符都不得更改。
s/unchanged-part\Kchanged-part/new-part/x
那几乎就像是一个后置断言,但是当然不是那么灵活。
有关regex
的更多信息:
据我了解,您不能在同一正则表达式中两次使用\ K。 而且,直到说到要“杀死”您发现的角色,您都无法说出。 那总是一直到行的开始。
(感谢ikegami +1)。
我的其他问题:
regex
效应的终点必须是哪一点?regex
。除了语法和可读性之外,while(true)
和for(;;)
之间的PHP有什么区别吗?
编辑:我不会认为这是重复的-我想知道特定于PHP的答案。 就发动机而言,有什么真正的区别? 他们会编译成相同的东西吗? 他们有平等的表现吗?
编辑2:我也不会考虑相对性能和相关的操作码是基于观点的。 在可读性方面存在意见分歧,但这显然不是问题。
我需要在PHP中将strtotime转换为日期btime格式(从PDT的1307595105到2011年6月8日09:51:45 PM)
你能给我一个答案吗
我在单元测试领域越来越深入。
我遇到的一个问题是要运行多个测试套件的问题,这是我的反馈意见,也许只是我一个,但是我需要使用参数--process-isolation才能通过测试。 我可以单独运行任何套件,而不会出现问题,但是如果我运行时没有--process-isolation,则运行迄今我拥有的6-7个套件,它们之间分布有180个断言将失败。 问题在于,使用此参数可使测试运行35分钟,而通常需要2.5分钟。 这是一个漫长的等待。
问题与将模拟的DI容器用于特定测试有关,并且当测试套件以链式运行时,容器未正确重新初始化。 在DI容器上设置的静态属性用于测试预期的故障会使以下套件中的测试失败。 容器具有一个参数,该参数可以将包含的对象保存在静态var中,以在每次调用时返回相同的实例。 一个变相的单身人士。 而且在应用程序级别上运行良好,这只是测试的麻烦。
我可以避免使用该容器参数,而将应用程序编码为不使用静态属性,但是为了一种方法论而避免使用一种有用的语言构造似乎有点过头了。
也许我做错了(我当然希望如此!),但是如果给每个测试一个干净的状态下运行SUT进行测试,我会给人留下深刻的印象,使用--process-isolation无法解决问题。 这使测试非常耗时,并从中获得一点乐趣。 我在编码时分别运行套件和测试,并在进行主要提交之前在后台运行套件,从而在某种程度上绕过了这个问题。
我遇到的是正常现象吗,有没有办法应对? 您的测试人员如何确保测试时间合理? 如何处理静电以免影响测试?
任何见解赞赏/评论赞赏。
我习惯于使用python的virtualenv工具创建单独的环境,该环境可以模仿我编写的项目的部署环境。
现在,我将要开发一个php项目,我想知道是否有任何等效的东西? 具体来说,我希望能够使用一个(较旧)版本的php在apache上运行一个virtualhost,而其他所有内容都在正常的最新版本上运行。
我的开发计算机正在运行ubuntu 11.04,因此首选在该平台上运行的解决方案。
我想在$ items数组中添加新元素,出于某些原因,我不想使用联接。
$items = DB::select(DB::raw('SELECT * FROM items WHERE items.id = '.$id.' ;'));
foreach($items as $item){
$product = DB::select(DB::raw(' select * from product
where product_id = '. $id.';' ));
$item->push($product);
}
我该怎么办,请帮忙,谢谢
众所周知的事实是,现代正则表达式实现(最著名的是PCRE)与正则语法的原始概念几乎没有共通之处。 例如,您可以解析上下文无关语法的经典示例{anbn; n> 0}(例如aaabbbccc
)使用此正则表达式(演示):
~^(a(?1)?b)$~
我的问题是:您能走多远? 是否还可以使用PCRE来解析上下文相关文法{anbncn; n> 0}(例如aaabbbccc
)?
这个问题已经在这里有了答案:
这听起来真的很愚蠢,但是我无法弄清楚为什么会出现此错误。
我创建了一个选择框,以我的html形式命名为“ query_age”:
<form method="get" action="user_list.php">
<select name="query_age">
<option value="">Doesn't matter</option>
<option value="between 18 and 30">18 - 30</option>
<option value="between 31 and 40">31 - 40</option>
<option value="between 41 and 50">41 - 50</option>
<option value="between 51 and 60">51 - 60</option>
<option value="between 61 and 70">61 - 70</option>
<option value="between 71 and 80">71 - 80</option>
<option value="between 81 and 90">81 - 90</option>
<option value="> 90">Older than 90</option>
</select>
在相应的php形式中,我有:
$query_age = $_GET['query_age'];
运行页面时,出现此错误:
注意:未定义的索引:第19行的index.php中的query_age
我不明白为什么会这样,我很想知道如何解决它。
这就是我自动加载models
文件夹中的所有类的方式,
# auto load controller classes
function __autoload($class_name)
{
$filename = 'class_'.strtolower($class_name).'.php';
$file = AP_SITE.'controllers/'.$filename;
if (file_exists($file) == false)
{
return false;
}
include ($file);
}
但是我也有models
文件夹中的类,我也想自动加载它们-我该怎么办? 我是否应该复制上面的自动加载并仅将路径更改为models/
(但这不是重复的吗?)?
谢谢。
编辑:
这些是我在控制器文件夹中的类文件名:
class_controller_base.php
class_factory.php
etc
这些是我在模型文件夹中的类文件名:
class_model_page.php
class_model_parent.php
etc
这通常是我命名控制器类类的方式(我使用下划线和小写),
class controller_base
{
...
}
class controller_factory
{
...
}
这通常是我为模型类类命名的方式(我使用下划线和小写),
class model_page
{
...
}
class model_parent
{
...
}