PHP 30.04.2016 / 14:49 | | Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| kingdosya, есть готовые панели управления
__________________
Магистр Мёда |
30.04.2016 / 14:53 | | Helltar Пользователь Сейчас: Offline
Регистрация: 29.11.2011
| kingdosya, для начала поставить линукс, или хотя бы убунту.
|
2.05.2016 / 12:09 | | kingdosya Пользователь Сейчас: Offline
Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
| Цитата Helltar: kingdosya, для начала поставить линукс, или хотя бы убунту.Ого! Выделенным даже ось установить разрешается? :-O.
|
8.05.2016 / 23:34 | | NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| kingdosya, смотря какая система виртуализации.
__________________
Чёрные усы кричает этот свисть |
26.05.2016 / 18:30 | | Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| PHP 7.0.7(Changelog)Как всегда было пофикшено немало багов в: Core, Curl, GD, JSON, Mbstring, Reflection, Session, Sockets, SPL, Standard.В Core добавлена опция компилятора отключить специальные вызовы функций, а в Sockets добавлена функция socket_export_stream() для получения потока, совместимого ресурса из сокета ресурса. оновился (см. скрин)
Прикрепленные файлы: php707.png (3.25 кб.) Скачано 143 раза |
26.05.2016 / 22:28 | | Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Jahak, про сокеты не очень понятно. Что они сделали и зачем это нужно?
|
27.05.2016 / 02:56 | | Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Ксакеп, Added socket_export_stream() function for getting a stream compatible resource from a socket resource.
|
27.05.2016 / 07:20 | | aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| Jahak, «stream compatible resource». Ресурс, совместимый с потоком
__________________
don't tread on me |
27.05.2016 / 08:53 | | Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| aRiGaTo, во всем виноват Translate Google |
3.11.2016 / 20:22 | | Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Немного информации о новых возможностях в PHPНовые возможности в:PHP 5.6 PHP 5.6 /*
* Added constant scalar expressions syntax.
*/
//Constant Declarations
const FOO = 1 + 1;
const BAR = 1 << 1;
const GREETING = "HELLO";
const BAZ = GREETING . " WORLD!";
//Class Constant Declarations
class Foo
{
const FOO = 1 + 1;
const BAR = 1 << 1;
const GREETING = "HELLO";
const BAZ = self::GREETING . " WORLD!";
}
//Class Property Declarations
class Foo
{
const BAZ = 10;
}
class Bar
{
public $foo = 1 + 1;
public $bar = [
1 + 1,
1 << 2,
Foo::BAZ => "foo " . "bar"
];
public $baseDir = __DIR__ . "/base";
}
//Function Argument Declarations
const BAR = 1;
function foo($a = 1 + 1, $b = 2 << 3, $c = BAR ? 10 : 100)
{
}
//Static Variable Declarations
const BAR = 0x10;
function foo()
{
static $a = 1 + 1;
static $b = [1 << 2];
static $c = 0x01 | BAR;
}
/*
* Added dedicated syntax for variadic functions.
*/
function f($req, $opt = null, ...$params)
{
// $params is an array containing the remaining arguments.
printf('$req: %d; $opt: %d; number of params: %d' . "\n",
$req, $opt, count($params));
}
f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
/*
* Added support for argument unpacking to complement the variadic syntax.
*/
function test(...$args)
{
var_dump($args);
}
test(1, 2, 3); // [1, 2, 3]
test(...[1, 2, 3]); // [1, 2, 3]
test(...new ArrayIterator([1, 2, 3])); // [1, 2, 3]
$args1 = [1, 2, 3];
$args2 = [4, 5, 6];
test(...$args1, ...$args2); // [1, 2, 3, 4, 5, 6]
test(1, 2, 3, ...$args2); // [1, 2, 3, 4, 5, 6]
/*
* Added an exponentiation operator (**).
*/
echo 2 ** 3; // 8
$x = 2;
$x **= 3;
echo $x; // 8
echo 2 ** 3 ** 2; // 512 (not 64)
echo -3 ** 2; // -9 (not 9)
echo 1 - 3 ** 2; // -8
echo ~3 ** 2; // -10 (not 16)
/*
* Added use function and use const.
*/
namespace foo\bar {
const baz = 42;
function baz()
{
return 'foo.bar.baz';
}
function qux()
{
return baz();
}
}
namespace {
use const foo\bar\baz as BAR_BAZ;
use function foo\bar\baz;
use function foo\bar\qux as bar_qux;
var_dump(baz()); // foo.bar.baz
var_dump(bar_qux()); // foo.bar.baz
var_dump(BAR_BAZ); // 42
}
/*
* Added the __debugInfo() magic method to allow userland classes to implement the get_debug_info API previously available only to extensions.
*/
class C
{
private $prop;
public function __construct($val)
{
$this->prop = $val;
}
public function __debugInfo()
{
return [
'propSquared' => $this->prop ** 2,
];
}
}
var_dump(new C(42));
PHP 7.0 PHP 7.0 /*
* Added group use declarations.
*/
// Current use syntax:
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ChoiceQuestion as Choice;
use Symfony\Component\Console\Question\ConfirmationQuestion;
// Proposed group use syntax:
use Symfony\Component\Console\{
Helper\Table,
Input\ArrayInput,
Input\InputInterface,
Output\NullOutput,
Output\OutputInterface,
Question\Question,
Question\ChoiceQuestion as Choice,
Question\ConfirmationQuestion,
};
/*
* Added null coalesce operator (??).
*/
$x = null;
$y = null;
$z = 3;
var_dump($x ?? $y ?? $z); // int(3)
$x = ["yarr" => "meaningful_value"];
var_dump($x["aharr"] ?? $x["waharr"] ?? $x["yarr"]); // string(16) "meaningful_value"
var_dump(2 ?? 3 ? 4 : 5); // (2 ?? 3) ? 4 : 5 => int(4)
var_dump(0 || 2 ?? 3 ? 4 : 5); // ((0 || 2) ?? 3) ? 4 : 5 => int(4)
/*
* Added the comparison operator (<=>), aka the spaceship operator.
*/
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1
// Objects
$a = (object)["a" => "b"];
$b = (object)["a" => "b"];
echo $a <=> $b; // 0
$a = (object)["a" => "b"];
$b = (object)["a" => "c"];
echo $a <=> $b; // -1
$a = (object)["a" => "c"];
$b = (object)["a" => "b"];
echo $a <=> $b; // 1
$a = (object)["a" => "b"];
$b = (object)["b" => "b"];
echo $a <=> $b; // 0
/*
* Reserved keywords can now be used in various new contexts.
*/
class Collection implements \ArrayAccess, \Countable, \IteratorAggregate
{
public static function new(array $itens)
{
return new self($itens);
}
public function forEach(callable $callback)
{
//...
}
public function list()
{
//...
}
}
Collection::new(['foo', 'bar'])->forEach(function ($index, $item) {
/* callback */
})->list();
class View
{
public function include(View $view)
{
//...
}
}
$viewA = new View('a.view');
$viewA->include(new View('b.view'));
class HTTP
{
const CONTINUE = 100; // works with patch
// but currently fails because 'continue' is a globally reserved word
const SWITCHING_PROTOCOLS = 101;
/* ... */
}
/*
* Added support for scalar type declarations and strict mode using declare(strict_types=1)
*/
//Scalar type declarations
//Argument 3 passed to sumOfInts() must be of the type integer, float given, called in D:\php710\test\test.php on line 9
//declare(strict_types = 1);
function sumOfInts(int ...$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
//Return type declarations
function arraysSum(array ...$arrays): array
{
return array_map(function (array $array): int {
return array_sum($array);
}, $arrays);
}
print_r(arraysSum([1, 2, 3], [4, 5, 6], [7, 8, 9])); // [6, 15, 24]
/*
* Added \u{xxxxxx} Unicode Codepoint Escape Syntax for double-quoted strings and heredocs.
*/
//http://apps.timwhitlock.info/emoji/tables/unicode
echo "\u{1F646}";
echo "\u{1F648}";
echo "\u{9999}";
/*
* Anonymous classes
*/
trait SomeTrait
{
}
interface SomeInterface
{
}
class SomeClass
{
}
var_dump(
new class(10) extends SomeClass implements SomeInterface
{
use SomeTrait;
private $num;
public function __construct($num)
{
$this->num = $num;
}
}
);
PHP 7.1 PHP 7.1 /*
* Added void return type, which requires that a function not return a value.
*/
function swap(&$left, &$right) : void
{
if ($left === $right) {
return;
}
$tmp = $left;
$left = $right;
$right = $tmp;
}
$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b); // NULL, 2, 1
function lacks_return(): void
{
// valid
}
function returns_nothing(): void
{
return; // valid
}
function returns_null(): void
{
return null; // Fatal error: A void function must not return a value
}
/*
* Added iterable pseudo-type accepting any array or object implementing Traversable.
*/
var_dump(is_iterable([1, 2, 3])); // bool(true)
var_dump(is_iterable(new ArrayIterator([1, 2, 3]))); // bool(true)
var_dump(is_iterable((function () {
yield 1;
})())); // bool(true)
var_dump(is_iterable(1)); // bool(false)
var_dump(is_iterable(new stdClass())); // bool(false)
function foo(iterable $iterable)
{
foreach ($iterable as $value) {
// ...
}
}
function bar(): iterable
{
return [1, 2, 3];
}
function gen(): iterable
{
yield 1;
yield 2;
yield 3;
}
/*
* String offset access now supports negative references, which will be counted from the end of the string.
*/
$str = 'abcdef';
var_dump($str[-2]); // => string(1) "e"
$str{-3} = '.';
var_dump($str); // => string(6) "abc.ef"
var_dump(isset($str{-4})); // => bool(true)
var_dump(isset($str{-10})); // => bool(false)
var_dump("abcdef"[-2]); // string(1) "e"
var_dump(strpos("aabbcc", "b", -3)); // int(3)
$string = 'bar';
//The last character of 'bar' is 'r'.
echo "The last character of '$string' is '$string[-1]'.\n";
/*
* Added a form of the list() construct where keys can be specified.
*/
$points = [
["x" => 1, "y" => 2],
["x" => 2, "y" => 1]
];
//Point at (1, 2)
//Point at (2, 1)
foreach ($points as list("x" => $x, "y" => $y)) {
echo "Point at ($x, $y)", PHP_EOL;
}
/*
* Added [] = as alternative construct to list() =.
*/
foreach ($points as ["x" => $x, "y" => $y]) {
var_dump($x, $y);
}
/*
* Added support for class constant visibility modifiers.
*/
//Interfaces only support public consts, and a compile time error will be thrown for anything else. Mirroring the behavior of methods.
interface ICache
{
public const PUBLIC = 0;
const IMPLICIT_PUBLIC = 1;
}
class Token
{
// Constants default to public
const PUBLIC_CONST = 0;
// Constants then also can have a defined visibility
private const PRIVATE_CONST = 0;
protected const PROTECTED_CONST = 0;
public const PUBLIC_CONST_TWO = 0;
//Constants can only have one visibility declaration list
private const FOO = 1, BAR = 2;
}
//Reflection was enhanced to allow fetching more than just the values of constants
class testClass
{
const TEST_CONST = 'test';
}
/*
* Nullable types
*/
function testReturn(): ?string
{
return 'elePHPant';
}
var_dump(testReturn());
function testReturn(): ?string
{
return null;
}
//Fatal error: Cannot redeclare testReturn()
var_dump(testReturn());
function test(?string $name)
{
var_dump($name);
}
test('elePHPant');
test(null);
test(); // Fatal error: Uncaught ArgumentCountError: Too few arguments to function test(), 0 passed..
/*
* Multi catch exception handling
*/
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
}
Прикрепленные файлы: 000233-56.png (41.16 кб.) Скачано 157 раз |
Всего сообщений: 1350 Фильтровать сообщения Поиск по теме Файлы топика (36)
|