相关疑难解决方法(0)

249
推荐指数
7
解决办法
7万
查看次数

我可以像这样使用try-catch-finally吗?

我已经使用try-catch多年了,但我从来没有学过如何以及何时使用finally,因为我从未明白finally(我读过坏书)的意思?

我想问你finally在我的案子中的用法.

我的代码示例应该解释一切:

$s = "";

$c = MyClassForFileHandling::getInstance();

try
{
    $s = $c->get_file_content($path);
}

catch FileNotFoundExeption
{
    $c->create_file($path, "text for new file");
}

finally
{
    $s = $c->get_file_content($path);
}
Run Code Online (Sandbox Code Playgroud)

终于正确使用了吗?

更准确的问题:

我可以使用finally(在未来的PHP版本或其他语言中)处理"创建一些不存在的东西"操作吗?

php try-catch-finally

15
推荐指数
1
解决办法
3万
查看次数

从闭包中访问私有变量

我试图从一个闭包中引用一个对象的私有变量.下面的代码似乎有效,但它抱怨Fatal error: Cannot access self:: when no class scope is active in test.php on line 12Fatal error: Using $this when not in object context in test.php on line 20.

任何想法如何使用闭包完成相同的结果,同时保持变量私有和没有帮助函数(击败私有变量的整个想法).

class MyClass
{

    static private $_var1;
    private $_var2;

    static function setVar1( $value )
    {
        $closure = function () use ( $value ) {
            self::$_var1 = $value;
        };
        $closure();
    }

    function setVar2( $value )
    {
        $closure = function () use ( $value ) {
            $this->_var2 = $value; …
Run Code Online (Sandbox Code Playgroud)

php closures scope

12
推荐指数
1
解决办法
5560
查看次数

在PHP中访问匿名函数中对象的私有/受保护属性

我试图通过匿名函数转储对象的私有属性的元素 - 当然我可以通过许多其他方式实现这一点,但这突出了一个PHP难题,我无法解决我的头脑,缺乏$ foo = $ this和使用$ foo - 但这不会给我私人的东西,所以...建议?

示例代码:

class MyClass
{
    private $payload = Array( 'a' => 'A element', 'b' => 'B element');

    static $csvOrder = Array('b','a');

    public function toCSV(){
        $values = array_map(
            function($name) use ($this) { return $this->payload[$name]; },  
            self::$csvOrder
        );
        return implode(',',$values);
    }
}

$mc = new MyClass();
print $mc->toCSV();
Run Code Online (Sandbox Code Playgroud)

php oop anonymous-function

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

最后异常给出了错误php

我正在尝试学习PHP,我刚刚转到Exceptions,当我尝试一个例子时

http://php.net/manual/en/language.exceptions.php

Example #2 Exception handling with a finally block

我得到一个错误

Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\test\filename.php on line 13

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} finally {
    echo "First finally.\n";
}

try {
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n"; …
Run Code Online (Sandbox Code Playgroud)

php exception

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