小编Dan*_*ugg的帖子

Apache,mod_*,PHP,Perl,Python,Ruby; 向后学习

我前段时间开始进行Web开发,但我基本上都花了很多时间学习PHP,MySQL/SQLite,(X)HTML/XML(XPath,XQuery,XSL)等.我带着一个开箱即用的东西XAMPP安装,一切都非常简单,我可以专注于语言学习.

然而,现在,我正在学习Ruby和Python(以及更多的Perl),但令我沮丧的是,我发现我基本上不了解Apache配置,或者与为嵌入式PHP设置环境相关的任何相关任务,Perl, Python和Ruby.

我最近发布了一个问题,我认为会带我在正确的方向.阅读完mod_wsgimod_rails文档之后,我比开始时更困惑.

我正在使用现有的XAMPP安装运行Windows 7 x64,刚刚使用了Ruby和Python,只安装了NetBeans; 而且我想知道:

  • 我应该从一个新的Apache安装开始,还是XAMPP很好地堆积其他模块?

  • 在哪里可以找到有关配置Apache以支持这些模块的一些信息?我正在逐步构建一个支持部分,全部或更多上述语言的环境.

我想我的问题可归纳为; 有哪些建议的阅读/学习资源用于配置基于Apache的多语言Web应用程序开发环境?

我希望这个问题不被认为具有高度的主观性或普遍性; 我只是迷失了,不想浪费时间茫然地盯着配置文件等.

我真的很感激任何见解,并原谅我的noob因素.我很惊讶我和这个领域一样不熟悉,很快就需要改变它.

php ruby python apache perl

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

MySQL/PDO :: quote(),在整数周围加上单引号

无论我传递给哪个值/数据类型对$pdo->quote($value, $type);,它似乎总是将其引用为字符串:

echo $pdo->quote('foo', PDO::PARAM_STR); /* 'foo', as expected */

echo $pdo->quote(42, PDO::PARAM_INT);    /* '42', expected 42 unquoted */
Run Code Online (Sandbox Code Playgroud)

我只是想知道这是否是预期的功能.我使用预准备语句来执行实际查询,但我正在尝试获取 创建最终查询字符串(用于调试/缓存),并且正在手动构建它们.

正如标题所示,这是$pdo使用MySQL驱动程序创建的时间.由于不可用,我没有尝试过其他人.

mysql pdo types querystringparameter

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

如何使用PHP连接sqlite数据库?

我已经尝试使用PHP PDO连接数据库.我有很多样品,我不确定是什么问题.

下面是我的代码

<?php
    try
    {
        // $db = new PDO('sqlite:sampleDB.db3');
        // $db = new SQLiteDatabase('sampleDB.sqlite', 0666, $error);  
        $db = new PDO('sqlite:sampleDB.sqlite');
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
?>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多方法来打开连接.请告诉我正确的方法......

php sqlite pdo

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

CSS 允许的最大高度(以像素为单位)

我知道不同的浏览器可能有不同的上限值,但是对于给定浏览器中最大可渲染 CSS 高度/宽度的良好经验法则是什么?

例如这个技巧:

.parent{
    overflow: hidden;
}

.column{
    float: left;
}

.max-height{
    margin-bottom: -30000px;
    padding-bottom: 30000px;
}
Run Code Online (Sandbox Code Playgroud)
.parent{
    overflow: hidden;
}

.column{
    float: left;
}

.max-height{
    margin-bottom: -30000px;
    padding-bottom: 30000px;
}
Run Code Online (Sandbox Code Playgroud)

我知道这几乎是愚蠢的,但如果一个页面扩展到超过30000px,那么现在这个技巧就不起作用了。

我见过32768px在不同的地方使用过;这是因为较高的值不可靠,还是仅仅因为它是一个很好的平方数?

css size pixel cross-browser

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

PHP的current()和key()函数; 与功能签名不一致

我注意到PHP current()key()数组函数(像其他数组指针函数一样)通过引用获取数组参数:

mixed current(array &$ array)
每个数组都有一个指向其"current"元素的内部指针,该元素被初始化为插入到数组中的第一个元素.

的几个简单的检查后,似乎都current()key()(不像其它阵列指针功能)由值时传递的函数的返回值接受数组参数,从而不引发错误.

我的结论是,它只是因为current()并且key()不试图移动数组指针,因此不要求通过引用传递参数(或者以一些透明,安静,隐秘的方式执行).但是,这对我来说有点担心.

任何人都可以确认这是否是预期的功能?我很乐意用它来抢夺返回数组的第一个元素/键,但是在几乎任何其他情况下发出致命错误(或严格标准警告)以传递值时,PHP似乎非常奇怪.参考参数.

功能还是错误?


例如:

error_reporting(-1);

function getArray(){
    return array('a', 'b', 'c');
}

var_dump( current(getArray()) );
var_dump( key(getArray())     );
var_dump( next(getArray())    );
var_dump( prev(getArray())    );
var_dump( reset(getArray())   );
var_dump( end(getArray())     );
Run Code Online (Sandbox Code Playgroud)

结果:

string(1) "a"

int(0)

Strict standards: Only variables should be passed by reference ...
string(1) "b"

Strict standards: Only variables should …
Run Code Online (Sandbox Code Playgroud)

php arrays reference pass-by-reference

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

PHP核心函数参数; 手册说参考,但它接受值

我注意到PHP手册中存在一些不一致之处; 记录了许多核心功能签名以通过引用接受参数,但是它们按值接受参数.

我之前发布了一个更具体的问题,@ cweiske提供了一个很好的答案(参考了相关的PHP源代码)但是这些不一致似乎更加猖獗.

有许多功能受此影响(我将更新此列表作为保证;另请注意,这些测试是在error_reporting(-1)环境中完成的)

现在我很担心,不是因为我对文档很苛刻,而是因为我担心PHP开发人员会对这些函数的实现细节(或同样不可靠的东西)进行讨论.

我使用array_replace_recursive()例如,获取数组参数,并将其应用于包含默认值的另一个数组.我的一些代码库利用了这种不一致性,只需:

$values = array_replace_recursive(array(
    'setting_1' => array(
        'sub-setting_1' => '',
        'sub-setting_2' …
Run Code Online (Sandbox Code Playgroud)

php function-signature

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

澄清PHP手册; 通过引用传递的默认值

由于PHP手册中的不一致(正如我之前发布的那样),我只是在询问一些澄清.

函数参数页面(http://ca2.php.net/manual/en/functions.arguments.php)有以下注意事项:

注意:从PHP 5开始,默认值可以通过引用传递.

现在,我认为这只是意味着可以接受以下语法:

function foo(&$bar = null){
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然而,再次由于其他不一致,我想知道这是否属于其他东西.

php parameters function

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

将数组排序为关联数组,奇数值作为键

很简单:

// turn
array('foo', 'bar', 'hello', 'world');

// into
array('foo' => 'bar', 'hello' => 'world');
Run Code Online (Sandbox Code Playgroud)

现在我正在使用:

do{
    $arrayOut[current($arrayIn)] = next($arrayIn);
}while(next($arrayIn));
Run Code Online (Sandbox Code Playgroud)

我想知道如果没有中间变量,有没有办法做到这一点,$arrayOut.我可以写一个函数,但这只是一个用例,我试图保持我的脚本整洁.我只是想知道在文档中是否遗漏了一些可以达到此目的的东西.


值来自路由路径:

route/to/controller/action/key1/value1/key2/value2
Run Code Online (Sandbox Code Playgroud)

它爆炸了,最后在使用其他组件后,我就离开了 ('key1', 'value1', 'key2', 'value2', ...)


感谢大家的见解和建议.Long Ears以简洁的方式赢得了这个,当扩展到超过"1线"时,并不是非常神秘(我至少不认为)

然而,同样关于Long Ears的建议,也许我对语义精确的代码的渴望最小化了我的好处,而我正在追逐雏菊试图保持我的变量范围"无污染",用自己来解释.

php arrays associative-array

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

PHP强制实例Closure,排序

引用PHP:

目前使用Closure类实现匿名函数.这是一个实现细节,不应该依赖.

现在,那说,以下检查被认为是不可靠的:

function myFunction(Closure $callback){}

if(!($callback instanceof Closure)){}
Run Code Online (Sandbox Code Playgroud)

这让我们使用is_callable().这很好,但如果一个人需要一个真正的" 封闭 ",(作为一个论点,或者说是什么),那么is_callable()就不够严格了.以下当然转储bool(true)每个:

function myFunction(){}

class MyClass{
    public function __invoke(){}
}

var_dump(is_callable('myFunction'));
var_dump(is_callable(new MyClass));
Run Code Online (Sandbox Code Playgroud)

怎么样,而不依赖于Closure类(给出的实际上是不可靠的)可以在一个严格确定一个" 封闭 "?


更新

在我看来,我正朝着糟糕的设计方向前进.然而,尽管这个问题得到了回答,但我认为如果有人能够提出所提问题的答案,如果不是纯粹为了它的学术要素,我将不胜感激.

更新(再次)

自PHP 5.4发布以来(前一段时间),该Closure类型不再是"实现细节",可以依赖.function f(Closure $g) { }一切都很好.

php closures types anonymous-function

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

PHP线程SimpleXMLElement

我一直在搜索这个问题而且我遇到了很多问题,但我不认为这是实际代码的问题.基本上这个代码在两个独立的线程中启动套接字服务器(登录和游戏),我基本上从非线程版本转换了这个代码,但我一直无法让这个工作用于线程.

include "socket.php";
include "dep.php";

class Server extends Thread {
    public $server;
    public $config;
    public function __construct($type){
        //$this->config = (string)$type;
        $this->run2($type);
        $this->run();
    }
    public function run(){
        while(true){
            $this->server->loop();
        }
    }
    public function run2($config){
        $this->server = new sokserv($config);
        $this->server->init();
        //while(true){
        //  $this->server->loop();
        //}
    }
}
$login = new Server('Config/config.xml');
$game = new Server("Config/config2.xml");
The error received is 
Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in C:\Users\=\Desktop\Test\Start.php:19
Stack trace:
#0 C:\Users\=\Desktop\Test\Start.php(19): Server->run2()
#1 C:\Users\=\Desktop\Test\Start.php(10): Server->run2('Config/config.x...')
#2 …
Run Code Online (Sandbox Code Playgroud)

php xml multithreading pthreads simplexml

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