コード例 #1
0
ファイル: interface.php プロジェクト: JoshuaReneDalley/php
<?php

// interface.php
require __DIR__ . "/../safeRun.php";
interface SomeInterface
{
}
class SomeImplementation implements SomeInterface
{
}
class NotSomeImplementation
{
}
function returnsSomeInterface($someImplementation) : SomeInterface
{
    return $someImplementation;
}
safeRun("Calling returnsSomeInterface() with a SomeImplementation object", function () {
    $someImplementation = new SomeImplementation();
    returnsSomeInterface($someImplementation);
});
safeRun("Calling returnsSomeInterface() with a NotSomeImplementation object", function () {
    $notSomeImplementation = new NotSomeImplementation();
    returnsSomeInterface($notSomeImplementation);
});
コード例 #2
0
ファイル: arrayArg.php プロジェクト: JoshuaReneDalley/php
<?php

// arrayArg.php
require __DIR__ . "/../safeRun.php";
function countArray(array $array)
{
    return count($array);
}
safeRun("Passing an array as an argument", function () {
    $rainbow = ["whero", "karaka", "kowhai", "kakariki", "kikorangi", "poropango", "papura"];
    $result = countArray($rainbow);
    echo "The rainbow has {$result} colours<br>";
});
safeRun("Passing a string as an argument", function () {
    countArray("Not an array");
});
コード例 #3
0
ファイル: scalarArg.php プロジェクト: JoshuaReneDalley/php
    $result = takesInt($b);
    echo "Returned:<br>";
    var_dump($result);
});
safeRun("Passing a string", function () {
    $s = "1";
    $result = takesInt($s);
    echo "Returned:<br>";
    var_dump($result);
});
safeRun("Passing a string which in no way can be considered an int", function () {
    $s = "not an integer";
    $result = takesInt($s);
    echo "Returned:<br>";
    var_dump($result);
});
safeRun("Passing a PHP object", function () {
    $d = new DateTime();
    $result = takesInt($d);
    echo "Returned:<br>";
    var_dump($result);
});
class C
{
}
safeRun("Passing a bespoke object", function () {
    $o = new C();
    $result = takesInt($o);
    echo "Returned:<br>";
    var_dump($result);
});
コード例 #4
0
<?php

// classWithToString.php
require __DIR__ . "/safeRun.php";
class Person
{
    protected $name;
    function __construct($name)
    {
        $this->name = $name;
    }
}
class StringablePerson extends Person
{
    function __toString()
    {
        return $this->name;
    }
}
safeRun("Outputing a StringablePerson", function () {
    $son = new StringablePerson("Zachary");
    echo "The boy's name is {$son}<br>";
});
safeRun("Outputing a Person (which gives a fatal error)", function () {
    $son = new Person("Zachary");
    echo "The boy's name is {$son}<br>";
});
コード例 #5
0
ファイル: null.php プロジェクト: JoshuaReneDalley/php
<?php

// null.php
require __DIR__ . "/../safeRun.php";
function returnsAnInt($i) : int
{
    return $i;
}
safeRun("See what happens if we return null on an int function", function () {
    $result = returnsAnInt(null);
    echo "returnsAnInt(null): [{$result}]<br>";
});
コード例 #6
0
ファイル: class.php プロジェクト: JoshuaReneDalley/php
<?php

// class.php
require __DIR__ . "/../safeRun.php";
class Test
{
}
class NotTest
{
}
function returnsTest($test) : Test
{
    return $test;
}
safeRun("Calling returnsTest() with a Test object", function () {
    $test = new Test();
    returnsTest($test);
});
safeRun("Calling returnsTest() with a NotTest object", function () {
    $notTest = new NotTest();
    returnsTest($notTest);
});
safeRun("Calling returnsTest() with a null object", function () {
    returnsTest(null);
});
コード例 #7
0
ファイル: SubClass.php プロジェクト: JoshuaReneDalley/php
<?php

// subClass.php
require __DIR__ . "/../safeRun.php";
class BaseClass
{
}
class SubClass extends BaseClass
{
}
class NotSubclass
{
}
function returnsBaseClass($subClass) : BaseClass
{
    return $subClass;
}
safeRun("Calling returnsBaseClass() with a SubClass object", function () {
    $subClass = new SubClass();
    returnsBaseClass($subClass);
});
safeRun("Calling returnsBaseClass() with a NotSubClass object", function () {
    $notSubClass = new NotSubClass();
    returnsBaseClass($notSubClass);
});
コード例 #8
0
<?php

// intReturnType.php
require __DIR__ . "/../safeRun.php";
function echoInt($x) : int
{
    return $x;
}
safeRun("Baseline: returning an int", function () {
    $testValue = 42;
    $result = echoInt($testValue);
    echo "echoInt({$testValue}): [{$result}]<br>";
});
safeRun("returning a string", function () {
    $testValue = "wha-tekau rua";
    $result = echoInt($testValue);
    echo "echoInt({$testValue}): [{$result}]<br>";
});
コード例 #9
0
ファイル: intObject.php プロジェクト: JoshuaReneDalley/php
<?php

// intObject.php
require __DIR__ . "/safeRun.php";
class int
{
}
function takesInt(int $i)
{
    return $i;
}
safeRun("Passing an int (object)", function () {
    $i = new int();
    $result = takesInt($i);
    echo "Returned:<br>";
    var_dump($result);
});
コード例 #10
0
    }
}
class StringablePerson extends Person
{
    function __toString()
    {
        return $this->name;
    }
}
function takesString(string $s)
{
    return $s;
}
safeRun("Passing a string", function () {
    $s = "Zachary";
    $result = takesString($s);
    echo "Returned:<br>";
    var_dump($result);
});
safeRun("Passing an object without __toString()", function () {
    $o = new Person("Zachary");
    $result = takesString($o);
    echo "Returned:<br>";
    var_dump($result);
});
safeRun("Passing an object with __toString()", function () {
    $o = new StringablePerson("Zachary");
    $result = takesString($o);
    echo "Returned:<br>";
    var_dump($result);
});