Тест 1. Передача данных по ссылке.
[php]<?php
function byReference(&$variable = 5) {
++$variable;
}
$a = 12;
byReference($a);
echo $a;
/ ==================== /
class MyClass{
public $value;
}
$a = new MyClass;
$a->value = 1;
$b = $a;
$b->value = 2;
echo $a->value;
[/php]
Тест 2. Вызов неопределенного метода и использование магической функции __call
[php]<?php
class TestClass extends TestClassBase {
public function __call($method, $arguments) { echo 'method: '.$method.PHP_EOL; return $this->$method($arguments[0]); }
}
class TestClassBase {
protected function getUndefined($name) { echo $name.PHP_EOL; }
}
$tc = new TestClass();
echo $tc->getUndefined('undef');
[/php]
Тест 3. Пример работы со строками
[php]<?php
$var1 = "10foos";
$var2 = "20 bars";
print "implode("", array($var1, $var2)) ".implode("", array($var1, $var2));
print "var1.var2 ".$var1.$var2;
print "var1 + var2 ". ($var1 + $var2);
[/php]
Тест 4. Как наследуются статические члены класса
[php]<?php
class Foo {
public static $my_static = 'foo'; public function staticValue() { return self::$my_static; }
}
class Bar extends Foo {
public function fooStatic() { return self::$my_static; }
}
print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
print $bar->staticValue() . "\n";
[/php]
Тест 5. Задача из тестового задания
[php]<?php
$oranges = 10;
$apples = 5;
$string = "I have %d apples and %d oranges";
echo PHP_EOL;
printf($string, $apples, $oranges);
echo PHP_EOL;
print sprintf($apples, $oranges);
echo PHP_EOL;
sprintf($string, $oranges, $apples);
[/php]
Тест 6. Проверял как работает autoload
[php]<?php
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
$obj = new MyTestClass();
echo $obj->testVar;
[/php]
Тест 7. str и float
[php]<?php
$var1 = '0.0123';
if ($var1 > 0) {
echo PHP_EOL.'More'.PHP_EOL;
} else {
echo PHP_EOL.'Less'.PHP_EOL;
}
[/php]
Тест 8. Тестирование исключений. Был очень похожий пример в реальном коде
[php]<?php
class MyException extends Exception {
}
class TestException {
public static function testExc() { throw new MyException('MyException '. __CLASS__); }
}
class Test2Exception {
public static function test2Exc() { TestException::testExc(); }
}
class Main {
public function methodMain() { try { Test2Exception::test2Exc(); } catch (Exception $e) { echo $e->getMessage().PHP_EOL; } }
}
$m = new Main();
$m->methodMain();
[/php]
Тест 9. merge и + для массивов
[php]<?php
$arr1 = array('comment1', array(1,2,3,4,5,6)); $arr2 = array('comment2', array(3,3,3,4,5,6)); echo 'arr1'.PHP_EOL; print_r($arr1); echo PHP_EOL.'arr2'.PHP_EOL; print_r($arr2); $m = array_merge($arr1, $arr2); echo "merge ".PHP_EOL; print_r($m); $new2 = $arr1 + $arr2; echo "plus ".PHP_EOL; print_r($new2);
[/php]
Тест 10. Ленивая проверка. Если первое условие не выполнено, то второе не проверяется
[php]<?php
$arr = array('t1' => 0);
if($arr['t1'] AND $arr['t2']) {
echo 'not';
} else {
echo 'lazy';
}
[/php]
Прошлые записи
- Переезд в Калининград
- О serverless технологии для чатботов
- Свободное время на улучшение блога
- o-zhizni-v-kaliningrade-spustya-god
- Продажа гаража из другого города
- В Калининграде спустя полгода
- Выйти на работу или сидеть дома
- Теперь мы живем в старой немецкой квартире и счастливы
- Как за один день найти жилье в августе 2020 (после пандемии) и чуть не остаться на улице с двумя детьми
- О переезде в Калининград
- О протестах в Америке