有没有办法动态创建所有实例属性?例如,我想能够产生在构造函数中的所有属性,仍然能够访问它们的类实例化这样的后:$object->property.请注意,我想单独访问属性,而不是使用数组; 这是我不想要的一个例子:
class Thing {
public $properties;
function __construct(array $props=array()) {
$this->properties = $props;
}
}
$foo = new Thing(array('bar' => 'baz');
# I don't want to have to do this:
$foo->properties['bar'];
# I want to do this:
//$foo->bar;
Run Code Online (Sandbox Code Playgroud)
更具体地讲,当我处理那些有大量的属性类别,我希望能够选择数据库中的所有列(代表属性),并从中创建实例属性.每个列值应存储在单独的实例属性中.
我是一名PHP开发人员,现在我使用Notepad ++进行代码编辑,但最近我一直在寻找一个IDE来简化我的工作.
我看过Eclipse,Aptana Studio和其他几个人,但我并没有真正决定,它们看起来都不错,但有点复杂.我相信一旦我习惯它会变得容易,但我不想浪费我的时间.
这就是我要找的东西:
从"最佳实践"的角度来看,您认为使用PHP插入HTML的最佳方式是什么?目前我使用以下方法之一(主要是后者),但我很想知道你认为哪种方法最好.
<?php
if($a){
?>
[SOME MARKUP]
<?php
}
else{
?>
[SOME OTHER MARKUP]
<?php
}
?>
Run Code Online (Sandbox Code Playgroud)
反对:
<?php
unset($out);
if($a) $out = '[SOME MARKUP]';
else $out = '[OTHER MARKUP]';
print $out;
?>
Run Code Online (Sandbox Code Playgroud) 我有一个JavaScript数组,其中包含一个URL.如果我尝试简单地将URL放在页面中(该数组位于涉及Yahoo! Maps API的项目中),则会显示应该显示的URL.
但是,如果我尝试重定向或只是对链接数组元素执行"警报",我得到:
function(){return JSON.encode(this);}
据我所知,这是因为浏览器在呈现页面时会执行JSON.encode,因此链接显示正常.我已经尝试了几种方法使其重定向(这是我想要对链接做的)正确(包括'eval'的使用),但没有运气.
遵循一些建议我已经运行eval('(' + jsonObject + ')')但它仍然返回相同的输出.
那怎么回事?
我想做的是将'domain1'中的'file1.php'包含在'domain2'上的'file2.php'中.所以我认为我应该做的是这样的:
file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';
Run Code Online (Sandbox Code Playgroud)
但这不能用于我无法真正掌握的原因.所以我做的是将我的路径添加到包含路径.就像是:
file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';
Run Code Online (Sandbox Code Playgroud)
那么请你给我一些提示,说明我做错了什么?
谢谢
更新 - 无论哪种方式,我收到以下错误消息:
Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用safe_mode On和Off.
UPDATE2:我还在我的测试文件上将权限更改为777,并且我已经在bash中仔细检查了包含文件的路径.
解决方案:我设法解开了这个谜!我的托管公司使用Plesk来管理域名等.php.ini中的错误报告级别也不是E_ALL.当我向E_ALL设置错误报告时,我收到一条警告:
Warning: require() [function.require]: open_basedir restriction in effect.
Run Code Online (Sandbox Code Playgroud)
所以我进入/var/www/vhosts/domain2/conf/httpd.include并编辑了open_basedir路径.请注意,这不是一个持久的解决方案,因为每次更改域配置时,此配置文件都会被plesk重写.您应该做的是在同一目录中编辑(或创建)'vhost.conf'文件,然后运行:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD
Run Code Online (Sandbox Code Playgroud)
这应该重新配置您的域的设置,但由于一些奇怪的原因,它不适用于open_basedir.我可以修改其他东西,比如document_root,但它不会改变open_basedir,但这是另一个问题:D
解决方案最终:对于那些有同样问题的人来说,最终的代码是有效的.我刚刚在/var/www/vhosts/domain2/conf/vhost.conf中添加了这个(您可以将'/ var/www/vhosts'更改为'/'或任何您喜欢的内容):
<Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts"
</IfModule>
Options -Includes -ExecCGI
</Directory>
Run Code Online (Sandbox Code Playgroud)
谢谢大家!
我编写了很多动态生成的内容(在PHP下开发),我使用jQuery为我的项目增加了额外的灵活性和功能.
事情是,以一种不引人注目的方式添加JavaScript是相当困难的.这是一个例子:
您必须生成随机数量的div元素,每个元素都触发不同的功能onClick.我可以使用onclick我的div元素上的属性来调用带有参数的JS函数,但这只是一个糟糕的解决方案.此外,我可以在我的PHP for循环中生成一些jQuery代码以及每个div ,但是再次这不会完全不引人注目.
那么这种情况下的解决方案是什么?
所以我想要做的是使用jQuery为我正在使用的一些AJAX调用协调一些效果.我的问题是第二个div的fadeIn与第一个div的fadeOut同时触发.
这也适用于其他事件,所以我很好奇,有没有办法在fadeOut完成后才能启动fadeId?
jQuery("#div1").fadeOut("slow");
jQuery("#div2").fadeIn("slow");
Run Code Online (Sandbox Code Playgroud)
谢谢
我今天安装了Aptana 1.5但安装完成后,当我尝试提交,更新,修复等时,所有我的SVN项目都给出了这样的错误:
Access is denied.
svn: Error resolving case of 'C:\Users\Brayn\My Documents\Aptana Studio Workspace\PentruConstrucii'
Run Code Online (Sandbox Code Playgroud)
我已经卸载了我以前的aptana版本,重新安装了aptana 1.5,改变了我的工作区,它仍然给了我这个错误.
你知道它会是什么吗?
有一段时间以来,我一直在与同事讨论如何在PHP类中存储属性.
那么你认为应该使用哪一个.像这样的东西:
Class test{
public $attr1;
public $attr2;
..............
public function __construct(){
$this->attr1 = val;
$this->attr1 = val;
...................
}
}
Run Code Online (Sandbox Code Playgroud)
与:
Class test{
public $data;
public function __construct(){
$this->data['attr1'] = val;
$this->data['attr2'] = val;
..........................
}
}
Run Code Online (Sandbox Code Playgroud)
当您拥有必须经常存储和检索的许多属性的对象时,这一点很重要.
在处理具有许多属性的对象时,同样重要的是,您是为每个属性使用getter和setter,还是使用一个方法来设置all和one方法来获取所有属性?
我正在开发一个需要电子支付模块的RoR网站.电子支付实现要求使用由它们提供的公共ssl密钥对xml数据进行编码.
我在Ruby中尝试做的事情:
public_key = OpenSSL::PKey::RSA.new(File.read(public_key_file))
Run Code Online (Sandbox Code Playgroud)
如果我只是尝试单独打开文件,它工作正常.但RSA.new()方法返回以下错误:
OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error
from (irb):5:in `initialize'
from (irb):5:in `new'
from (irb):5
Run Code Online (Sandbox Code Playgroud)
从我在在线文档中看到的,使用.pem文件但我的公钥类似于public.cer.这可能是问题吗?在e-payment公司提供的PHP示例中,密钥本身似乎没问题,同样的public.cer文件工作正常.
我究竟做错了什么?
谢谢,
我的代码看起来像:
$(document).ready(function(){
var cont = 0;
function func1(cont)
{
//Some code here
search.setSearchCompleteCallback(this, searchComplete, null);
//Some other code
}
func1(cont);
function searchComplete()
{
//Some code
cont += 1;
if (cont < length ) {
func1(cont);
} else {
// Other code
}
}
});
Run Code Online (Sandbox Code Playgroud)
所以我想做的是延迟执行func1(续); 在searchComplete()函数内部.这样做的原因是所有代码都是使用Google搜索API和PageRank检查,我需要放慢脚本速度,这样我才不会被禁止.(特别是关于公关检查的要求).如果我只是在func1(cont)上使用setTimeout(); 它说没有定义func1(),如果我试图在$(document).ready()之外获取该函数,它会看到该函数,但Google代码不会因为它需要完全加载的页面.
如何修复setTimeout或如何暂停脚本几秒钟?
谢谢!
php ×5
javascript ×4
jquery ×3
class ×2
oop ×2
aptana ×1
eclipse ×1
encryption ×1
html ×1
ide ×1
include ×1
include-path ×1
json ×1
openssl ×1
settimeout ×1
svn ×1