mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-09 10:10:50 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0eda1aeca3 |
No files matched your search
+4
-2
@@ -1,3 +1,4 @@
|
||||
|
||||
version: "{branch}.build.{build}"
|
||||
|
||||
image: Visual Studio 2017
|
||||
@@ -13,10 +14,10 @@ cache:
|
||||
- c:\build-cache
|
||||
|
||||
environment:
|
||||
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
|
||||
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
|
||||
PHP_BUILD_OBJ_DIR: c:\obj
|
||||
PHP_BUILD_CACHE_SDK_DIR: c:\build-cache\sdk
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.2.0beta6
|
||||
PHP_BUILD_SDK_BRANCH: php-sdk-2.1.8
|
||||
PHP_BUILD_CRT: vc15
|
||||
# ext and env setup for tests
|
||||
#MYSQL_TEST_PASSWD: Password12!
|
||||
@@ -49,3 +50,4 @@ build_script:
|
||||
|
||||
test_script:
|
||||
- appveyor\test.bat
|
||||
|
||||
+19
-18
@@ -1,34 +1,35 @@
|
||||
# https://editorconfig.org/
|
||||
# http://editorconfig.org/
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
end_of_line = lf
|
||||
[*.{c,h,awk,w32,bat,mk,frag}]
|
||||
charset = utf-8
|
||||
tab_width = 4
|
||||
|
||||
[{*.{awk,bat,c,cpp,d,h,l,mk,re,skl,w32,y},Makefile*}]
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
tab_width = 4
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{dtd,html,inc,php,phpt,rng,wsdl,xml,xsd,xsl}]
|
||||
[*.{php,phpt}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{ac,m4,sh,yml}]
|
||||
[*.{yml,m4,sh}]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
max_line_length = 80
|
||||
|
||||
[COMMIT_EDITMSG]
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
max_line_length = 80
|
||||
|
||||
[*.patch]
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = true
|
||||
@@ -5,7 +5,7 @@ end
|
||||
document set_ts
|
||||
set the ts resource, it is impossible for gdb to
|
||||
call ts_resource_ex while no process is running,
|
||||
but we could get the resource from the argument
|
||||
but we could get the resource from the argument
|
||||
of frame info.
|
||||
end
|
||||
|
||||
@@ -153,7 +153,7 @@ end
|
||||
|
||||
define printzv
|
||||
set $ind = 1
|
||||
____printzv $arg0 0
|
||||
____printzv $arg0 0
|
||||
end
|
||||
|
||||
document printzv
|
||||
@@ -190,7 +190,7 @@ define ____printzv_contents
|
||||
if $type == 6
|
||||
printf "string: %s", $zvalue->value.str->val
|
||||
end
|
||||
if $type == 7
|
||||
if $type == 7
|
||||
printf "array: "
|
||||
if ! $arg1
|
||||
set $ind = $ind + 1
|
||||
@@ -287,7 +287,7 @@ define ____printzv
|
||||
if $arg1
|
||||
____printzv_contents $zcontents $arg1
|
||||
else
|
||||
____printzv_contents $zcontents 0
|
||||
____printzv_contents $zcontents 0
|
||||
end
|
||||
end
|
||||
|
||||
@@ -340,7 +340,7 @@ define ____print_ht
|
||||
set $n = $n - 1
|
||||
end
|
||||
printf "[%d] ", $i
|
||||
if $p->key
|
||||
if $p->key
|
||||
printf "%s => ", $p->key->val
|
||||
else
|
||||
printf "%d => ", $p->h
|
||||
@@ -389,7 +389,7 @@ document print_htptr
|
||||
end
|
||||
|
||||
define print_htstr
|
||||
set $ind = 0
|
||||
set $ind = 0
|
||||
____print_ht $arg0 2
|
||||
end
|
||||
|
||||
@@ -543,10 +543,10 @@ define printzn
|
||||
if $znode->op_type == 1
|
||||
set $optype = "IS_CONST"
|
||||
end
|
||||
if $znode->op_type == 2
|
||||
if $znode->op_type == 2
|
||||
set $optype = "IS_TMP_VAR"
|
||||
end
|
||||
if $znode->op_type == 4
|
||||
if $znode->op_type == 4
|
||||
set $optype = "IS_VAR"
|
||||
end
|
||||
if $znode->op_type == 8
|
||||
@@ -576,11 +576,11 @@ end
|
||||
|
||||
document printzn
|
||||
print type and content of znode.
|
||||
usage: printzn &opline->op1
|
||||
usage: printzn &opline->op1
|
||||
end
|
||||
|
||||
define printzops
|
||||
printf "op1 => "
|
||||
printf "op1 => "
|
||||
printzn &execute_data->opline.op1
|
||||
printf "op2 => "
|
||||
printzn &execute_data->opline.op2
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
*.tar.xz.asc
|
||||
.FBCIndex
|
||||
.FBCLockFolder
|
||||
.deps
|
||||
.libs
|
||||
phpt.*
|
||||
core
|
||||
|
||||
+3
-7
@@ -1,6 +1,3 @@
|
||||
git:
|
||||
quiet: true
|
||||
|
||||
dist: trusty
|
||||
language: c
|
||||
sudo: required
|
||||
@@ -23,7 +20,7 @@ addons:
|
||||
- libzip-dev
|
||||
|
||||
notifications:
|
||||
email:
|
||||
email:
|
||||
on_failure: change
|
||||
irc:
|
||||
template:
|
||||
@@ -65,10 +62,9 @@ before_script:
|
||||
- . ./travis/ext/pgsql/setup.sh
|
||||
- . ./travis/ext/pdo_pgsql/setup.sh
|
||||
|
||||
# Run PHPs run-tests.php
|
||||
# Run PHPs run-tests.php
|
||||
script:
|
||||
- ./sapi/cli/php run-tests.php -P -d extension=`pwd`/modules/zend_test.so $(if [ $ENABLE_DEBUG == 0 ]; then echo "-d opcache.enable_cli=1 -d zend_extension=`pwd`/modules/opcache.so"; fi) -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --offline --show-diff --show-slow 1000 --set-timeout 120
|
||||
- sapi/cli/php -d extension_dir=`pwd`/modules -r 'dl("zend_test");'
|
||||
- ./sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php $(if [ $ENABLE_DEBUG == 0 ]; then echo "-d opcache.enable_cli=1 -d zend_extension=`pwd`/modules/opcache.so"; fi) -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" --offline --show-diff --show-slow 1000 --set-timeout 120
|
||||
|
||||
after_success:
|
||||
- ccache --show-stats
|
||||
+1
-1
@@ -112,7 +112,7 @@ User Functions/Methods Naming Conventions
|
||||
of ``parent_*``::
|
||||
|
||||
A family of 'foo' functions, for example:
|
||||
|
||||
|
||||
Good:
|
||||
'foo_select_bar'
|
||||
'foo_insert_baz'
|
||||
|
||||
+3
-4
@@ -194,7 +194,7 @@ STATUS: Working
|
||||
SINCE: 5.0
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: soap
|
||||
PRIMARY MAINTAINER: Dmitry Stogov <dmitry@php.net> (2004 - 2018)
|
||||
PRIMARY MAINTAINER: Dmitry Stogov <dmitry@zend.com> (2004 - 2018)
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -244,7 +244,7 @@ SINCE: 5.0
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: bcmath
|
||||
MAINTENANCE: Andi Gutmans <andi@php.net> (2000 - 2004)
|
||||
MAINTENANCE: Andi Gutmans <andi@zend.com> (2000 - 2004)
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: bz2
|
||||
@@ -378,7 +378,7 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: opcache
|
||||
PRIMARY MAINTAINER: Dmitry Stogov <dmitry@php.net> (2013 - 2018)
|
||||
PRIMARY MAINTAINER: Dmitry Stogov <dmitry@zend.com> (2013 - 2018)
|
||||
Xinchen Hui <laruence@php.net> (2013 - 2018)
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
@@ -387,7 +387,6 @@ SINCE: 5.5.0
|
||||
EXTENSION: openssl
|
||||
PRIMARY MAINTAINER: Wez Furlong <wez@php.net> (2001 - 2006)
|
||||
Pierre-Alain Joye <pajoye@php.net> (2006 - 2011)
|
||||
Jakub Zelenka <bukka@php.net> (2015 - 2019)
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
SINCE: 4.0.4
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
The PHP License, version 3.01
|
||||
Copyright (c) 1999 - 2018 The PHP Group. All rights reserved.
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, is permitted provided that the following conditions
|
||||
@@ -9,22 +9,22 @@ are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
|
||||
3. The name "PHP" must not be used to endorse or promote products
|
||||
derived from this software without prior written permission. For
|
||||
written permission, please contact group@php.net.
|
||||
|
||||
|
||||
4. Products derived from this software may not be called "PHP", nor
|
||||
may "PHP" appear in their name, without prior written permission
|
||||
from group@php.net. You may indicate that your software works in
|
||||
conjunction with PHP by saying "Foo for PHP" instead of calling
|
||||
it "PHP Foo" or "phpfoo"
|
||||
|
||||
|
||||
5. The PHP Group may publish revised and/or new versions of the
|
||||
license from time to time. Each version will be given a
|
||||
distinguishing version number.
|
||||
@@ -41,27 +41,27 @@ are met:
|
||||
"This product includes PHP software, freely available from
|
||||
<http://www.php.net/software/>".
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
|
||||
THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
|
||||
ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
|
||||
DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
|
||||
This software consists of voluntary contributions made by many
|
||||
individuals on behalf of the PHP Group.
|
||||
|
||||
The PHP Group can be contacted via Email at group@php.net.
|
||||
|
||||
For more information on the PHP Group and the PHP project,
|
||||
For more information on the PHP Group and the PHP project,
|
||||
please see <http://www.php.net>.
|
||||
|
||||
PHP includes the Zend Engine, freely available at
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
#
|
||||
# Zend
|
||||
#
|
||||
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
|
||||
#
|
||||
# LCOV
|
||||
#
|
||||
@@ -61,7 +62,7 @@ php_lcov.info: lcov-test
|
||||
rm -rf lcov_data/$$dir ; \
|
||||
fi; \
|
||||
done
|
||||
@echo
|
||||
@echo
|
||||
@echo "Generating $@"
|
||||
@$(LTP) --directory lcov_data/ --capture --base-directory=lcov_data --output-file $@
|
||||
|
||||
|
||||
+4
-3
@@ -11,8 +11,8 @@ HOW TO USE IT
|
||||
|
||||
and everything you need will be placed in directory ext/extension_name.
|
||||
|
||||
If you don't need to test the existence of any external header files,
|
||||
libraries or functions in them, the extension is ready to be compiled in
|
||||
If you don't need to test the existence of any external header files,
|
||||
libraries or functions in them, the extension is ready to be compiled in
|
||||
PHP. To compile the extension, run the following:
|
||||
|
||||
./buildconf; ./configure --enable-extension_name; make
|
||||
@@ -24,7 +24,7 @@ HOW TO USE IT
|
||||
|
||||
SOURCE AND HEADER FILE NAME
|
||||
|
||||
The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
|
||||
The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
|
||||
as the main source and header files. Keep these names.
|
||||
|
||||
extension functions (User functions) must be named
|
||||
@@ -41,3 +41,4 @@ SOURCE AND HEADER FILE NAME
|
||||
OTHER OPTIONS
|
||||
|
||||
Run php ext_skel.php --help to see the available options.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
API adjustment to the old output control code:
|
||||
|
||||
Everything now resides beneath the php_output namespace,
|
||||
Everything now resides beneath the php_output namespace,
|
||||
and there's an API call for every output handler op.
|
||||
|
||||
Checking output control layers status:
|
||||
@@ -131,7 +131,7 @@ Output handler hooks
|
||||
Open questions
|
||||
|
||||
Should the userland API be adjusted and unified?
|
||||
|
||||
|
||||
Many bits of the manual (and very first implementation) do not comply
|
||||
with the behaviour of the current (to be obsoleted) code, thus should
|
||||
the manual or the behaviour be adjusted?
|
||||
|
||||
@@ -49,11 +49,11 @@ See also https://wiki.php.net/rfc/zpp_improv#expose_zend_parse_arg_as_zend_parse
|
||||
|
||||
Type specifiers
|
||||
---------------
|
||||
The following list shows the type specifier, its meaning and the parameter
|
||||
The following list shows the type specifier, its meaning and the parameter
|
||||
types that need to be passed by address. All passed parameters are set
|
||||
if the PHP parameter is non optional and untouched if optional and the
|
||||
if the PHP parameter is non optional and untouched if optional and the
|
||||
parameter is not present. The only exception is O where the zend_class_entry*
|
||||
has to be provided on input and is used to verify the PHP parameter is an
|
||||
has to be provided on input and is used to verify the PHP parameter is an
|
||||
instance of that class.
|
||||
|
||||
a - array (zval*)
|
||||
@@ -61,7 +61,7 @@ Type specifiers
|
||||
b - boolean (zend_bool)
|
||||
C - class (zend_class_entry*)
|
||||
d - double (double)
|
||||
f - function or array containing php method call info (returned as
|
||||
f - function or array containing php method call info (returned as
|
||||
zend_fcall_info and zend_fcall_info_cache)
|
||||
h - array (returned as HashTable*)
|
||||
H - array or HASH_OF(object) (returned as HashTable*)
|
||||
@@ -95,9 +95,9 @@ Type specifiers
|
||||
|
||||
Note on 64bit compatibility
|
||||
---------------------------
|
||||
Please note that since version 7 PHP uses zend_long as integer type and
|
||||
zend_string with size_t as length, so make sure you pass zend_longs to "l"
|
||||
and size_t to strings length (i.e. for "s" you need to pass char * and size_t),
|
||||
Please note that since version 7 PHP uses zend_long as integer type and
|
||||
zend_string with size_t as length, so make sure you pass zend_longs to "l"
|
||||
and size_t to strings length (i.e. for "s" you need to pass char * and size_t),
|
||||
not the other way round!
|
||||
|
||||
Both mistakes might cause memory corruptions and segfaults:
|
||||
@@ -110,7 +110,7 @@ Both mistakes might cause memory corruptions and segfaults:
|
||||
int num; /* XXX THIS IS WRONG!! Use zend_long instead. */
|
||||
zend_parse_parameters(ZEND_NUM_ARGS(), "l", &num)
|
||||
|
||||
If you're in doubt, use check_parameters.php script to the parameters
|
||||
If you're in doubt, use check_parameters.php script to the parameters
|
||||
and their types (it can be found in ./scripts/dev/ directory of PHP sources):
|
||||
|
||||
# php ./scripts/dev/check_parameters.php /path/to/your/sources/
|
||||
@@ -159,7 +159,7 @@ if (zend_parse_parameters(ZEND_NUM_ARGS(), "a/!",
|
||||
/* Get either a set of 3 longs or a string. */
|
||||
zend_long l1, l2, l3;
|
||||
char *s;
|
||||
/*
|
||||
/*
|
||||
* The function expects a pointer to a size_t in this case, not a long
|
||||
* or any other type. If you specify a type which is larger
|
||||
* than a 'size_t', the upper bits might not be initialized
|
||||
|
||||
@@ -32,7 +32,7 @@ team (Bjori) on hand.
|
||||
6. Verify the tags to be extra sure everything was tagged properly.
|
||||
|
||||
7. Moving extensions from/to PECL requires write access to the destination.
|
||||
Most developers should have this.
|
||||
Most developers should have this.
|
||||
|
||||
Moving extensions from php-src to PECL
|
||||
- Checkout the pecl directory, most likely you want a sparse-root checkout
|
||||
@@ -125,7 +125,7 @@ Getting the non stable release (alpha/beta/RC) announced
|
||||
|
||||
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
|
||||
|
||||
3. Add a short notice to phpweb stating that there is a new release, and
|
||||
3. Add a short notice to phpweb stating that there is a new release, and
|
||||
highlight the major important things (security fixes) and when it is important
|
||||
to upgrade.
|
||||
|
||||
@@ -140,7 +140,7 @@ to upgrade.
|
||||
|
||||
*Wait for web and qa sites to update with new information before sending announce*
|
||||
|
||||
5. Send **separate** emails **To** ``internals@lists.php.net`` and ``php-general@lists.php.net``
|
||||
5. Send **separate** emails **To** ``internals@lists.php.net`` and ``php-general@lists.php.net``
|
||||
lists pointing out "the location of the release" and "the possible release date of
|
||||
either the next RC, or the final release". Include in this information the verification
|
||||
information output by ``gen_verify_stub``.
|
||||
@@ -194,7 +194,7 @@ can be influenced by defining the environment variable TAR_OPTIONS='--format=gnu
|
||||
``gpg -u YOUREMAIL --armor --detach-sign php-X.Y.Z.tar.xxx``
|
||||
|
||||
11. Commit and push all the tarballs and signature files to web/php-distributions.git,
|
||||
then update the git submodule reference in web/php.git:
|
||||
then update the git submodule reference in web/php.git:
|
||||
``git submodule init;
|
||||
git submodule update;
|
||||
cd distributions;
|
||||
@@ -265,7 +265,7 @@ f.e. ``ChangeLog-5.php`` from the NEWS file
|
||||
IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
|
||||
|
||||
V. ``s/FR #\([0-9]\+\)/FR <?php bugl(\1); ?>/``
|
||||
|
||||
|
||||
e. You may want to try php-web/bin/news2html to automate this task
|
||||
|
||||
6. Add a short notice to phpweb stating that there is a new release, and
|
||||
@@ -362,7 +362,7 @@ New Release Manager Checklist
|
||||
one or more of the previous RMs sign your key. Publish your public key to pgp.mit.edu with:
|
||||
`gpg --keyserver pgp.mit.edu --send-keys $KEYID`
|
||||
|
||||
3. Request karma to edit main/php_version.h. Possibly karma for other restricted parts of
|
||||
3. Request karma to edit main/php_version.h. Possibly karma for other restricted parts of
|
||||
php-src might come in question.
|
||||
|
||||
4. Request karma for web/qa.git and web/php.git for publishing release announcements.
|
||||
@@ -370,3 +370,4 @@ New Release Manager Checklist
|
||||
5. Request moderation access to announce@php.net and primary-qa-tester@lists.php.net lists, to
|
||||
be able to moderate your release announcements. All the announcements should be sent from
|
||||
the @php.net alias.
|
||||
|
||||
@@ -20,7 +20,7 @@ PREPARING YOUR SYSTEM
|
||||
GNU libtool
|
||||
GNU m4
|
||||
|
||||
All of these are available from
|
||||
All of these are available from
|
||||
|
||||
ftp://ftp.gnu.org/pub/gnu/
|
||||
|
||||
@@ -30,7 +30,7 @@ CONVERTING AN EXISTING EXTENSION
|
||||
extension, we will convert an embedded extension into a
|
||||
self-contained one. Install PHP and execute the following
|
||||
commands.
|
||||
|
||||
|
||||
$ mkdir /tmp/newext
|
||||
$ cd /tmp/newext
|
||||
|
||||
@@ -53,7 +53,7 @@ CONVERTING AN EXISTING EXTENSION
|
||||
[--with-mysql=MYSQL-DIR]
|
||||
$ make install
|
||||
|
||||
The MySQL module will either use the embedded MySQL client
|
||||
The MySQL module will either use the embedded MySQL client
|
||||
library or the MySQL installation in MYSQL-DIR.
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ DEFINING THE NEW EXTENSION
|
||||
It consists of two source files "foo.c" and "bar.c"
|
||||
(and any arbitrary amount of header files, but that is not
|
||||
important here).
|
||||
|
||||
The demo extension does not reference any external
|
||||
|
||||
The demo extension does not reference any external
|
||||
libraries (that is important, because the user does not
|
||||
need to specify anything).
|
||||
|
||||
@@ -75,7 +75,7 @@ DEFINING THE NEW EXTENSION
|
||||
|
||||
CREATING THE M4 CONFIGURATION FILE
|
||||
|
||||
The m4 configuration can perform additional checks. For a
|
||||
The m4 configuration can perform additional checks. For a
|
||||
self-contained extension, you do not need more than a few
|
||||
macro calls.
|
||||
|
||||
@@ -94,7 +94,7 @@ fi
|
||||
The first argument of PHP_NEW_EXTENSION describes the name of the
|
||||
extension. The second names the source-code files. The third passes
|
||||
$ext_shared which is set by PHP_ARG_ENABLE/WITH to PHP_NEW_EXTENSION.
|
||||
|
||||
|
||||
Please use always PHP_ARG_ENABLE or PHP_ARG_WITH. Even if you do not
|
||||
plan to distribute your module with PHP, these facilities allow you
|
||||
to integrate your module easily into the main PHP module framework.
|
||||
@@ -135,7 +135,7 @@ INSTALLING A SELF-CONTAINED EXTENSION
|
||||
ADDING SHARED MODULE SUPPORT TO A MODULE
|
||||
|
||||
In order to be useful, a self-contained extension must be loadable
|
||||
as a shared module. I will explain now how you can add shared module
|
||||
as a shared module. I will explain now how you can add shared module
|
||||
support to an existing module called foo.
|
||||
|
||||
1. In config.m4, use PHP_ARG_WITH/PHP_ARG_ENABLE. Then you will
|
||||
@@ -164,3 +164,4 @@ PECL SITE CONFORMITY
|
||||
|
||||
This macros has to be used within your foo_module_entry to indicate the
|
||||
extension version.
|
||||
|
||||
+5
-5
@@ -27,7 +27,7 @@ The main functions are:
|
||||
PHPAPI size_t php_stream_read(php_stream * stream, char * buf, size_t count);
|
||||
PHPAPI size_t php_stream_write(php_stream * stream, const char * buf, size_t
|
||||
count);
|
||||
PHPAPI size_t php_stream_printf(php_stream * stream,
|
||||
PHPAPI size_t php_stream_printf(php_stream * stream,
|
||||
const char * fmt, ...);
|
||||
PHPAPI int php_stream_eof(php_stream * stream);
|
||||
PHPAPI int php_stream_getc(php_stream * stream);
|
||||
@@ -62,7 +62,7 @@ Where:
|
||||
file/URL, use this option to arrange for the stream
|
||||
to be copied (if needed) into a stream that can
|
||||
be seek()ed.
|
||||
|
||||
|
||||
opened_path is used to return the path of the actual file opened,
|
||||
but if you used STREAM_MUST_SEEK, may not be valid. You are
|
||||
responsible for efree()ing opened_path. opened_path may be (and usually
|
||||
@@ -94,7 +94,7 @@ PHPAPI php_stream *php_stream_sock_open_host(const char *host, unsigned short po
|
||||
PHPAPI php_stream *php_stream_sock_open_unix(const char *path, int persistent,
|
||||
struct timeval *timeout);
|
||||
Open a UNIX domain socket.
|
||||
|
||||
|
||||
|
||||
Stream Utilities
|
||||
================
|
||||
@@ -245,7 +245,7 @@ PHPAPI php_stream * php_stream_fopen(const char * filename, const char * mode)
|
||||
{
|
||||
FILE * fp = fopen(filename, mode);
|
||||
php_stream * ret;
|
||||
|
||||
|
||||
if (fp) {
|
||||
ret = php_stream_alloc(&php_stream_stdio_ops, fp, 0, 0, mode);
|
||||
if (ret)
|
||||
@@ -346,7 +346,7 @@ static size_t php_mysqlop_read(php_stream * stream, char * buf, size_t count)
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* pull out some data from the stream and put it in buf */
|
||||
... mysql_fetch_row(state->result) ...
|
||||
/* we could do something strange, like format the data as XML here,
|
||||
|
||||
@@ -128,7 +128,7 @@ How to create your PHP, PHP Documentation or PECL patch
|
||||
-------------------------------------------------------
|
||||
PHP and most PECL packages use Git for revision control. Some PECL
|
||||
packages use Subversion (SVN) Read http://www.php.net/git.php for help
|
||||
on using Git to get and build PHP source code. We recommend to look
|
||||
on using Git to get and build PHP source code. We recommend to look
|
||||
at our workflow on https://wiki.php.net/vcs/gitworkflow and our FAQ
|
||||
https://wiki.php.net/vcs/gitfaq.
|
||||
|
||||
|
||||
@@ -3,3 +3,4 @@ The Win32 Build System.
|
||||
See https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
|
||||
|
||||
vim:tw=78:sw=1:ts=1:et
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ enforced. It is implemented as a SAPI hook and is called from the
|
||||
treat_data and post handler functions. To implement your own security
|
||||
policy you will need to write a standard PHP extension. There is also
|
||||
a powerful standard implementation in ext/filter that should suit most
|
||||
peoples' needs. However, if you want to implement your own security
|
||||
peoples' needs. However, if you want to implement your own security
|
||||
policy, read on.
|
||||
|
||||
A simple implementation might look like the following. This stores the
|
||||
|
||||
@@ -37,3 +37,4 @@ Guidelines for contributors
|
||||
- [README.GIT-RULES](/README.GIT-RULES)
|
||||
- [README.MAILINGLIST_RULES](/README.MAILINGLIST_RULES)
|
||||
- [README.RELEASE_PROCESS](/README.RELEASE_PROCESS)
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
| Authors: Zeev Suraski <zeev@php.net> |
|
||||
| Authors: Zeev Suraski <zeev@zend.com> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
|
||||
+7
-1
@@ -6,7 +6,7 @@
|
||||
| This source file is subject to the TSRM license, that is bundled |
|
||||
| with this package in the file LICENSE |
|
||||
+----------------------------------------------------------------------+
|
||||
| Authors: Zeev Suraski <zeev@php.net> |
|
||||
| Authors: Zeev Suraski <zeev@zend.com> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
@@ -167,7 +167,13 @@ TSRM_API const char *tsrm_api_name(void);
|
||||
#define TSRMG_BULK_STATIC(id, type) ((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])
|
||||
#define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE;
|
||||
#define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL;
|
||||
#if ZEND_DEBUG
|
||||
#define TSRMLS_CACHE_UPDATE() TSRMLS_CACHE = tsrm_get_ls_cache()
|
||||
#define TSRMLS_CACHE_RESET()
|
||||
#else
|
||||
#define TSRMLS_CACHE_UPDATE() if (!TSRMLS_CACHE) TSRMLS_CACHE = tsrm_get_ls_cache()
|
||||
#define TSRMLS_CACHE_RESET() TSRMLS_CACHE = NULL
|
||||
#endif
|
||||
#define TSRMLS_CACHE _tsrm_ls_cache
|
||||
|
||||
/* BC only */
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
|
||||
AC_DEFUN([AM_SET_LIBTOOL_VARIABLE],[
|
||||
LIBTOOL='$(SHELL) $(top_builddir)/libtool $1'
|
||||
])
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ aclocal.m4: configure.ac acinclude.m4
|
||||
aclocal
|
||||
|
||||
$(config_h_in): configure.ac
|
||||
# explicitly remove target since autoheader does not seem to work
|
||||
# explicitly remove target since autoheader does not seem to work
|
||||
# correctly otherwise (timestamps are not updated)
|
||||
@rm -f $@
|
||||
autoheader
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
|
||||
ADD_SOURCES("TSRM", "TSRM.c tsrm_strtok_r.c tsrm_win32.c");
|
||||
ADD_FLAG("CFLAGS_BD_TSRM", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
|
||||
|
||||
+6
-6
@@ -1,17 +1,17 @@
|
||||
dnl Copyright (c) 1999, 2000 Sascha Schumann. All rights reserved.
|
||||
dnl
|
||||
dnl
|
||||
dnl Redistribution and use in source and binary forms, with or without
|
||||
dnl modification, are permitted provided that the following conditions
|
||||
dnl are met:
|
||||
dnl
|
||||
dnl
|
||||
dnl 1. Redistributions of source code must retain the above copyright
|
||||
dnl notice, this list of conditions and the following disclaimer.
|
||||
dnl
|
||||
dnl
|
||||
dnl 2. Redistributions in binary form must reproduce the above copyright
|
||||
dnl notice, this list of conditions and the following disclaimer in
|
||||
dnl the documentation and/or other materials provided with the
|
||||
dnl distribution.
|
||||
dnl
|
||||
dnl
|
||||
dnl THIS SOFTWARE IS PROVIDED BY SASCHA SCHUMANN ``AS IS'' AND ANY
|
||||
dnl EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -97,7 +97,7 @@ dnl -Kthread UDK cc (UnixWare)
|
||||
dnl -mt WorkShop cc (Solaris)
|
||||
dnl -mthreads gcc (AIX)
|
||||
dnl -pthread gcc (Linux, FreeBSD, NetBSD, OpenBSD)
|
||||
dnl -pthreads gcc (Solaris)
|
||||
dnl -pthreads gcc (Solaris)
|
||||
dnl -qthreaded AIX cc V5
|
||||
dnl -threads gcc (HP-UX)
|
||||
dnl
|
||||
@@ -113,7 +113,7 @@ CFLAGS=$save_CFLAGS
|
||||
AC_CACHE_CHECK(for pthreads_cflags,ac_cv_pthreads_cflags,[
|
||||
ac_cv_pthreads_cflags=
|
||||
if test "$pthreads_working" != "yes"; then
|
||||
for flag in -kthread -pthread -pthreads -mthreads -Kthread -threads -mt -qthreaded; do
|
||||
for flag in -kthread -pthread -pthreads -mthreads -Kthread -threads -mt -qthreaded; do
|
||||
ac_save=$CFLAGS
|
||||
CFLAGS="$CFLAGS $flag"
|
||||
PTHREADS_CHECK_COMPILE
|
||||
|
||||
@@ -22,7 +22,7 @@ PHP 7.3 UPGRADE NOTES
|
||||
Core:
|
||||
. The ext_skel utility has been completely redesigned with new options and
|
||||
some old options removed. This is now written in PHP and has no external
|
||||
dependencies.
|
||||
dependencies.
|
||||
. Support for BeOS has been dropped.
|
||||
. Exceptions thrown due to automatic conversion of warnings into exceptions
|
||||
in EH_THROW mode (e.g. some DateTime exceptions) no longer populate
|
||||
@@ -53,12 +53,12 @@ Core:
|
||||
case "baz":
|
||||
continue;
|
||||
// Warning: "continue" targeting switch is equivalent to
|
||||
// "break". Did you mean to use "continue 2"?
|
||||
"break". Did you mean to use "continue 2"?
|
||||
}
|
||||
}
|
||||
|
||||
. Array accesses of type $obj["123"], where $obj implements ArrayAccess and
|
||||
"123" is an integer string literal will no longer result in an implicit
|
||||
"123" is an integral string literal will no longer result in an implicit
|
||||
conversion to integer, i.e., $obj->offsetGet("123") will be called instead
|
||||
of $obj->offsetGet(123). This matches existing behavior for non-literals.
|
||||
The behavior of arrays is not affected in any way, they continue to
|
||||
@@ -112,12 +112,6 @@ BCMath:
|
||||
. bcmul() and bcpow() now return numbers with the requested scale. Formerly,
|
||||
the returned numbers may have omitted trailing decimal zeroes.
|
||||
|
||||
IMAP:
|
||||
rsh/ssh logins are disabled by default. Use imap.enable_insecure_rsh if you want
|
||||
to enable them. Note that the IMAP library does not filter mailbox names before
|
||||
passing them to rsh/ssh command, thus passing untrusted data to this function
|
||||
with rsh/ssh enabled is insecure.
|
||||
|
||||
MBString:
|
||||
. Due to added support for named captures, mb_ereg_*() patterns using named
|
||||
captures will behave differently. In particular named captures will be part
|
||||
@@ -243,17 +237,13 @@ readline:
|
||||
if PHP is linked against libreadline (rather than libedit).
|
||||
|
||||
Standard:
|
||||
. The --with-password-argon2[=dir] configure argument now provides support for
|
||||
both Argon2i and Argon2id hashes in the password_hash(), password_verify(),
|
||||
. The --with-password-argon2[=dir] configure argument now provides support for
|
||||
both Argon2i and Argon2id hashes in the password_hash(), password_verify(),
|
||||
password_get_info(), and password_needs_rehash() functions. Passwords may be
|
||||
hashed and verified using the PASSWORD_ARGON2ID constant.
|
||||
Support for both Argon2i and Argon2id in the password_* functions now requires
|
||||
PHP be linked against libargon2 reference library >= 20161029.
|
||||
(RFC: https://wiki.php.net/rfc/argon2_password_hash_enhancements).
|
||||
|
||||
LDAP:
|
||||
. Full support for LDAP Controls has been added to LDAP querying functions
|
||||
and ldap_parse_result
|
||||
(RFC: https://wiki.php.net/rfc/argon2_password_hash_enhancements).
|
||||
|
||||
========================================
|
||||
3. Changes in SAPI modules
|
||||
@@ -264,15 +254,7 @@ phpdbg:
|
||||
PHPDBG_FUNC have been removed.
|
||||
|
||||
FPM:
|
||||
. A new global option log_limit has been added. It can be used for setting
|
||||
log limit for logged line which allows to log messages longer than 1024
|
||||
characters without wrapping. It also fixes various wrapping issues.
|
||||
. A new global option log_buffering has been added. It allows an experimental
|
||||
logging without extra buffering.
|
||||
. A new pool option decorate_workers_output has been added. It allows
|
||||
disabling output decoration for workers output when catch_workers_output
|
||||
enabled.
|
||||
. The getallheaders() function is now also available.
|
||||
. The getallheaders function is now also available.
|
||||
|
||||
========================================
|
||||
4. Deprecated Functionality
|
||||
@@ -327,7 +309,7 @@ Standard:
|
||||
. Passing a non-string needle to string search functions is deprecated. In the
|
||||
future the needle will be interpreted as a string instead of an ASCII codepoint.
|
||||
Depending on the intended behavior, you should either explicitly cast the
|
||||
needle to string or perform an explicit call to chr(). The following functions
|
||||
needle to string or perform an explicit call to ord(). The following functions
|
||||
are affected:
|
||||
. strpos()
|
||||
. strrpos()
|
||||
@@ -373,16 +355,6 @@ Standard:
|
||||
PCRE:
|
||||
. preg_quote() now also escapes the '#' character.
|
||||
|
||||
LDAP:
|
||||
. Added a serverctrls parameter to send controls to the server in ldap_add,
|
||||
ldap_mod_replace, ldap_mod_add, ldap_mod_del, ldap_rename,
|
||||
ldap_compare, ldap_delete, ldap_modify_batch,
|
||||
ldap_search, ldap_list, ldap_read
|
||||
. Added an out parameter to get controls from the server in ldap_parse_result
|
||||
. Fixed support for LDAP_OPT_SERVER_CONTROLS and LDAP_OPT_CLIENT_CONTROLS in
|
||||
ldap_get_option and ldap_set_option.
|
||||
|
||||
|
||||
========================================
|
||||
6. New Functions
|
||||
========================================
|
||||
@@ -397,10 +369,6 @@ Core:
|
||||
are available under Linux, FreeBSD, Windows, Mac, SunOS, AIX and their
|
||||
derivatives. If no required timers are provided by a corresponding
|
||||
platform, the function returns false.
|
||||
. Added net_get_interfaces() to retrieve an array of available network
|
||||
interfaces including several details.
|
||||
. Added the gc_status() function to retrieve status information regarding the
|
||||
cyclic GC.
|
||||
|
||||
Date:
|
||||
. Added the DateTime::createFromImmutable() method, which mirrors
|
||||
@@ -430,10 +398,6 @@ Intl:
|
||||
. Added Normalizer::getRawDecomposition() and normalizer_get_raw_decomposition(),
|
||||
to retrieve the Decomposition_Mapping property of a character.
|
||||
|
||||
LDAP:
|
||||
. Added ldap_exop_refresh() to conveniently perform a Refresh extended
|
||||
operation.
|
||||
|
||||
OpenSSL:
|
||||
. Added openssl_pkey_derive that derives a shared secret for DH, ECDH and
|
||||
possibly other future algorithms supported by EVP_PKEY_derive.
|
||||
@@ -461,13 +425,6 @@ Standard:
|
||||
last key of an array, respectively.
|
||||
(RFC: <https://wiki.php.net/rfc/array_key_first_last>)
|
||||
|
||||
LDAP:
|
||||
. Added functions ldap_add_ext, ldap_bind_ext, ldap_delete_ext, ldap_mod_add_ext,
|
||||
ldap_mod_replace_ext, ldap_mod_del_ext, ldap_rename_ext
|
||||
which gives access to the result object to be able to parse it
|
||||
with ldap_parse_result and get more information than just success/failure.
|
||||
|
||||
|
||||
========================================
|
||||
7. New Classes and Interfaces
|
||||
========================================
|
||||
@@ -490,9 +447,9 @@ JSON:
|
||||
. FILTER_VALIDATE_FLOAT now also supports a `thousand` option, which
|
||||
defines the set of allowed thousand separator chars. The default (`"',."`)
|
||||
is fully backward compatible with former PHP versions.
|
||||
. FILTER_SANITIZE_ADD_SLASHES has been added as an alias of the 'magic_quotes'
|
||||
filter (FILTER_SANITIZE_MAGIC_QUOTES). The 'magic_quotes' filter is subject
|
||||
to removal in future versions of PHP.
|
||||
. FILTER_SANITIZE_ADD_SLASHES has been added as an alias of the 'magic_quotes'
|
||||
filter (FILTER_SANITIZE_MAGIC_QUOTES). The 'magic_quotes' filter is subject
|
||||
to removal in future versions of PHP.
|
||||
|
||||
FTP:
|
||||
. Set default transfer mode to binary
|
||||
@@ -509,150 +466,30 @@ JSON:
|
||||
. Support for ODBCRouter has been removed.
|
||||
. Support for Birdstep has been removed.
|
||||
|
||||
OpenSSL:
|
||||
. The min_proto_version and max_proto_version ssl stream options as well as
|
||||
related constants for possible TLS protocol values have been added.
|
||||
See <https://github.com/php/php-src/pull/3317>.
|
||||
|
||||
PCRE:
|
||||
PCRE:
|
||||
. The PCRE extension has been upgraded to PCRE2, which may cause minor
|
||||
behavioral changes (for instance, character ranges in classes are now more
|
||||
strictly interpreted), and augments the existing regular expression syntax.
|
||||
behavioral changes, and augments the existing regular expression syntax.
|
||||
See <https://wiki.php.net/rfc/pcre2-migration> for details.
|
||||
|
||||
PDO_DBLIB:
|
||||
. Added the attribute PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS to enable automatic
|
||||
skipping of empty rowsets.
|
||||
. Exposed the TDS version via the PDO::DBLIB_ATTR_TDS_VERSION attribute.
|
||||
. DATETIME2 columns are now treated like DATETIME columns.
|
||||
|
||||
PDO_SQLite:
|
||||
. SQLite3 databases can now be opened in read-only mode by setting the
|
||||
new PDO::SQLITE_ATTR_OPEN_FLAGS attribute to PDO::SQLITE_READONLY.
|
||||
|
||||
Standard:
|
||||
. var_export() now exports stdClass objects as an array casted to an object
|
||||
(`(object) array( ... )`), rather than using the nonexistent method
|
||||
stdClass::__setState().
|
||||
|
||||
Tidy:
|
||||
. Building against tidyp (<https://github.com/petdance/tidyp>) is now also
|
||||
supported transparently. Since tidyp offers no API to get the release date,
|
||||
tidy_get_release() and tidy::getRelease() return 'unknown' in this case.
|
||||
|
||||
XML:
|
||||
. The return value of the `xml_set_external_entity_ref_handler()` callback is
|
||||
now also heeded if the extension has been built against libxml. Formerly,
|
||||
the return value has been ignored, and parsing did never stop.
|
||||
|
||||
Zip:
|
||||
. Building against the bundled libzip is discouraged, but still possible by
|
||||
adding `--without-libzip` to the configuration.
|
||||
|
||||
zlib:
|
||||
. Added the zlib/level context option for the compress.zlib wrapper to
|
||||
facilitate setting the desired compression level.
|
||||
ZIP:
|
||||
. Bundled libzip has been dropped,
|
||||
system library is now required.
|
||||
|
||||
========================================
|
||||
10. New Global Constants
|
||||
========================================
|
||||
|
||||
Curl:
|
||||
. CURLAUTH_BEARER
|
||||
. CURLAUTH_GSSAPI
|
||||
. CURLE_WEIRD_SERVER_REPLY
|
||||
. CURLINFO_APPCONNECT_TIME_T
|
||||
. CURLINFO_CONNECT_TIME_T
|
||||
. CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
|
||||
. CURLINFO_CONTENT_LENGTH_UPLOAD_T
|
||||
. CURLINFO_FILETIME_T
|
||||
. CURLINFO_HTTP_VERSION
|
||||
. CURLINFO_NAMELOOKUP_TIME_T
|
||||
. CURLINFO_PRETRANSFER_TIME_T
|
||||
. CURLINFO_PROTOCOL
|
||||
. CURLINFO_PROXY_SSL_VERIFYRESULT
|
||||
. CURLINFO_REDIRECT_TIME_T
|
||||
. CURLINFO_SCHEME
|
||||
. CURLINFO_SIZE_DOWNLOAD_T
|
||||
. CURLINFO_SIZE_UPLOAD_T
|
||||
. CURLINFO_SPEED_DOWNLOAD_T
|
||||
. CURLINFO_SPEED_UPLOAD_T
|
||||
. CURLINFO_STARTTRANSFER_TIME_T
|
||||
. CURLINFO_TOTAL_TIME_T
|
||||
. CURL_LOCK_DATA_CONNECT
|
||||
. CURL_LOCK_DATA_PSL
|
||||
. CURL_MAX_READ_SIZE
|
||||
. CURLOPT_ABSTRACT_UNIX_SOCKET
|
||||
. CURLOPT_DISALLOW_USERNAME_IN_URL
|
||||
. CURLOPT_DNS_SHUFFLE_ADDRESSES
|
||||
. CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
|
||||
. CURLOPT_HAPROXYPROTOCOL
|
||||
. CURLOPT_KEEP_SENDING_ON_ERROR
|
||||
. CURLOPT_PRE_PROXY
|
||||
. CURLOPT_PROXY_CAINFO
|
||||
. CURLOPT_PROXY_CAPATH
|
||||
. CURLOPT_PROXY_CRLFILE
|
||||
. CURLOPT_PROXY_KEYPASSWD
|
||||
. CURLOPT_PROXY_PINNEDPUBLICKEY
|
||||
. CURLOPT_PROXY_SSLCERT
|
||||
. CURLOPT_PROXY_SSLCERTTYPE
|
||||
. CURLOPT_PROXY_SSL_CIPHER_LIST
|
||||
. CURLOPT_PROXY_SSLKEY
|
||||
. CURLOPT_PROXY_SSLKEYTYPE
|
||||
. CURLOPT_PROXY_SSL_OPTIONS
|
||||
. CURLOPT_PROXY_SSL_VERIFYHOST
|
||||
. CURLOPT_PROXY_SSL_VERIFYPEER
|
||||
. CURLOPT_PROXY_SSLVERSION
|
||||
. CURLOPT_PROXY_TLS13_CIPHERS
|
||||
. CURLOPT_PROXY_TLSAUTH_PASSWORD
|
||||
. CURLOPT_PROXY_TLSAUTH_TYPE
|
||||
. CURLOPT_PROXY_TLSAUTH_USERNAME
|
||||
. CURLOPT_REQUEST_TARGET
|
||||
. CURLOPT_SOCKS5_AUTH
|
||||
. CURLOPT_SSH_COMPRESSION
|
||||
. CURLOPT_SUPPRESS_CONNECT_HEADERS
|
||||
. CURLOPT_TIMEVALUE_LARGE
|
||||
. CURLOPT_TLS13_CIPHERS
|
||||
. CURLPROXY_HTTPS
|
||||
. CURLSSH_AUTH_GSSAPI
|
||||
. CURL_SSLVERSION_MAX_DEFAULT
|
||||
. CURL_SSLVERSION_MAX_NONE
|
||||
. CURL_SSLVERSION_MAX_TLSv1_0
|
||||
. CURL_SSLVERSION_MAX_TLSv1_1
|
||||
. CURL_SSLVERSION_MAX_TLSv1_2
|
||||
. CURL_SSLVERSION_MAX_TLSv1_3
|
||||
. CURL_SSLVERSION_TLSv1_3
|
||||
. CURL_VERSION_ALTSVC
|
||||
. CURL_VERSION_ASYNCHDNS
|
||||
. CURL_VERSION_BROTLI
|
||||
. CURL_VERSION_CONV
|
||||
. CURL_VERSION_CURLDEBUG
|
||||
. CURL_VERSION_DEBUG
|
||||
. CURL_VERSION_GSSAPI
|
||||
. CURL_VERSION_GSSNEGOTIATE
|
||||
. CURL_VERSION_HTTPS_PROXY
|
||||
. CURL_VERSION_IDN
|
||||
. CURL_VERSION_LARGEFILE
|
||||
. CURL_VERSION_MULTI_SSL
|
||||
. CURL_VERSION_NTLM
|
||||
. CURL_VERSION_NTLM_WB
|
||||
. CURL_VERSION_PSL
|
||||
. CURL_VERSION_SPNEGO
|
||||
. CURL_VERSION_SSPI
|
||||
. CURL_VERSION_TLSAUTH_SRP
|
||||
|
||||
Filter:
|
||||
. FILTER_SANITIZE_ADD_SLASHES
|
||||
|
||||
JSON:
|
||||
. JSON_THROW_ON_ERROR
|
||||
|
||||
OpenSSL:
|
||||
. STREAM_CRYPTO_PROTO_SSLv3
|
||||
. STREAM_CRYPTO_PROTO_TLSv1_0
|
||||
. STREAM_CRYPTO_PROTO_TLSv1_1
|
||||
. STREAM_CRYPTO_PROTO_TLSv1_2
|
||||
|
||||
MBString:
|
||||
. MB_CASE_FOLD
|
||||
. MB_CASE_LOWER_SIMPLE
|
||||
@@ -673,34 +510,6 @@ PGSQL:
|
||||
Standard:
|
||||
. PASSWORD_ARGON2ID
|
||||
|
||||
LDAP:
|
||||
. LDAP_CONTROL_MANAGEDSAIT
|
||||
. LDAP_CONTROL_PROXY_AUTHZ
|
||||
. LDAP_CONTROL_SUBENTRIES
|
||||
. LDAP_CONTROL_VALUESRETURNFILTER
|
||||
. LDAP_CONTROL_ASSERT
|
||||
. LDAP_CONTROL_PRE_READ
|
||||
. LDAP_CONTROL_POST_READ
|
||||
. LDAP_CONTROL_SORTREQUEST
|
||||
. LDAP_CONTROL_SORTRESPONSE
|
||||
. LDAP_CONTROL_PAGEDRESULTS
|
||||
. LDAP_CONTROL_AUTHZID_REQUEST
|
||||
. LDAP_CONTROL_AUTHZID_RESPONSE
|
||||
. LDAP_CONTROL_SYNC
|
||||
. LDAP_CONTROL_SYNC_STATE
|
||||
. LDAP_CONTROL_SYNC_DONE
|
||||
. LDAP_CONTROL_DONTUSECOPY
|
||||
. LDAP_CONTROL_PASSWORDPOLICYREQUEST
|
||||
. LDAP_CONTROL_PASSWORDPOLICYRESPONSE
|
||||
. LDAP_CONTROL_X_INCREMENTAL_VALUES
|
||||
. LDAP_CONTROL_X_DOMAIN_SCOPE
|
||||
. LDAP_CONTROL_X_PERMISSIVE_MODIFY
|
||||
. LDAP_CONTROL_X_SEARCH_OPTIONS
|
||||
. LDAP_CONTROL_X_TREE_DELETE
|
||||
. LDAP_CONTROL_X_EXTENDED_DN
|
||||
. LDAP_CONTROL_VLVREQUEST
|
||||
. LDAP_CONTROL_VLVRESPONSE
|
||||
|
||||
========================================
|
||||
11. Changes to INI File Handling
|
||||
========================================
|
||||
@@ -730,10 +539,6 @@ LDAP:
|
||||
. New INI to set syslog ident string which is prepended to every message. It
|
||||
is used only when error_log is set syslog.
|
||||
|
||||
- mbstring.regex_stack_limit
|
||||
. New INI directive (since 7.3.5) limiting stack depth of mbstring/oniguruma
|
||||
regular expressions.
|
||||
|
||||
========================================
|
||||
12. Windows Support
|
||||
========================================
|
||||
@@ -749,5 +554,3 @@ LDAP:
|
||||
13. Other Changes
|
||||
========================================
|
||||
|
||||
. The cyclic GC has been enhanced, which may result in considerable performance
|
||||
improvements.
|
||||
+5
-5
@@ -122,7 +122,7 @@ PHP 7.3 INTERNALS UPGRADE NOTES
|
||||
|
||||
n. IS_TYPE_COPYABLE flag is removed. IS_STRING zvals didn't need to be
|
||||
duplication by zval_copy_ctor(), ZVAL_DUP() and SEPARATE_ZVAL*() macros.
|
||||
Interned strings didn't set IS_TYPE_COPYABLE, so they aren't affected at
|
||||
Interned strings didn't set IS_TYPE_COPYALE, so they aren't affected at
|
||||
all. Now instead of checking for IS_TYPE_COPYABLE, engine checks for
|
||||
IS_ARRAY type (it may be IS_TYPE_REFCOUNTED or not). All the related
|
||||
macros: Z_COPYABLE..., Z_IMMUTABLE... are kept for compatibility.
|
||||
@@ -166,8 +166,8 @@ PHP 7.3 INTERNALS UPGRADE NOTES
|
||||
|
||||
y. zend_constant.flags and zend_constant.module_number are packed into
|
||||
reserved space inside zend_constant.value. They should be accessed using
|
||||
ZEND_CONSTANT_FLAGS(), ZEND_CONSTANT_MODULE_NUMBER() and
|
||||
ZEND_CONSTANT_SET_FLAGS() macros.
|
||||
ZEND_CONTANT_FLAGS(), ZEND_CONSTANTS_MODULE_NUMBER() and
|
||||
ZEND_CONTANT_SET_FLAGS() macros.
|
||||
|
||||
z. HAVE_ST_BLKSIZE must be replaced with HAVE_STRUCT_STAT_ST_BLKSIZE and
|
||||
HAVE_ST_RDEV must be replaced with HAVE_STRUCT_STAT_ST_RDEV.
|
||||
@@ -175,7 +175,7 @@ PHP 7.3 INTERNALS UPGRADE NOTES
|
||||
aa. RETSIGTYPE has been removed from the generated php_config.h and should be
|
||||
replaced with void.
|
||||
|
||||
bb. php_setcookie() now expects an additional samesite argument, and the
|
||||
bb. php_setcookie() now expects an additional samesite argument, and the
|
||||
url_encode parameter has been moved to the end. The signature is now:
|
||||
int php_setcookie(zend_string *name, zend_string *value, time_t expires,
|
||||
zend_string *path, zend_string *domain, int secure,
|
||||
@@ -188,7 +188,6 @@ PHP 7.3 INTERNALS UPGRADE NOTES
|
||||
a. Unix build system changes
|
||||
- PHP_PROG_LEX, TSRM_CHECK_GCC_ARG, and LIBZEND_CPLUSPLUS_CHECKS Autoconf
|
||||
macros have been removed.
|
||||
- Minimum Autoconf version is 2.68+ for generating the configure script.
|
||||
|
||||
b. Windows build system changes
|
||||
- ZEND_WIN32_FORCE_INLINE doesn't affect C++ anymore. zend_always_inline is
|
||||
@@ -206,3 +205,4 @@ PHP 7.3 INTERNALS UPGRADE NOTES
|
||||
========================
|
||||
3. Module changes
|
||||
========================
|
||||
|
||||
+12
-12
@@ -1,25 +1,25 @@
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
The Zend Engine License, Version 2.00
|
||||
Copyright (c) 1999-2006 Zend Technologies Ltd. All rights reserved.
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, is permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
|
||||
3. The names "Zend" and "Zend Engine" must not be used to endorse
|
||||
or promote products derived from this software without prior
|
||||
permission from Zend Technologies Ltd. For written permission,
|
||||
please contact license@zend.com.
|
||||
|
||||
please contact license@zend.com.
|
||||
|
||||
4. Zend Technologies Ltd. may publish revised and/or new versions
|
||||
of the license from time to time. Each version will be given a
|
||||
distinguishing version number.
|
||||
@@ -40,9 +40,9 @@ are met:
|
||||
software must display the following acknowledgment:
|
||||
"The Zend Engine is freely available at http://www.zend.com"
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND
|
||||
THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND
|
||||
ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ZEND
|
||||
TECHNOLOGIES LTD. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
@@ -53,4 +53,4 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
--------------------------------------------------------------------
|
||||
@@ -53,3 +53,4 @@ depend:
|
||||
|
||||
zend_execute.lo: $(srcdir)/zend_execute.c
|
||||
$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(INLINE_CFLAGS) -c $(srcdir)/zend_execute.c
|
||||
|
||||
+8
-8
@@ -21,7 +21,7 @@ ZEND_VM_HANDLER(<OPCODE-NUMBER>, <OPCODE>, <OP1_TYPES>, <OP2_TYPES>)
|
||||
<OPCODE-NUMBER> is a opcode number (0, 1, ...)
|
||||
<OPCODE> is an opcode name (ZEN_NOP, ZEND_ADD, :)
|
||||
<OP1_TYPES> & <OP2_TYPES> are masks for allowed operand op_types. Specializer
|
||||
will generate code only for defined combination of types. You can use any
|
||||
will generate code only for defined combination of types. You can use any
|
||||
combination of the following op_types UNUSED, CONST, VAR, TMP and CV also
|
||||
you can use ANY mask to disable specialization according operand's op_type.
|
||||
<HANDLER'S CODE> is a handler's code itself. For most handlers it stills the
|
||||
@@ -34,9 +34,9 @@ EXECUTE_DATA
|
||||
execute_data
|
||||
ZEND_VM_DISPATCH_TO_HANDLER(<OP>)
|
||||
return <OP>_helper(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)
|
||||
ZEND_VM_DISPATCH_TO_HELPER(<NAME>)
|
||||
ZEND_VM_DISPATCH_TO_HELPER(<NAME>)
|
||||
return <NAME>(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)
|
||||
ZEND_VM_DISPATCH_TO_HELPER_EX(<NAME>,<PARAM>,<VAL>)
|
||||
ZEND_VM_DISPATCH_TO_HELPER_EX(<NAME>,<PARAM>,<VAL>)
|
||||
return <NAME>(<VAL>, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)
|
||||
ZEND_VM_CONTINUE()
|
||||
return 0
|
||||
@@ -72,7 +72,7 @@ FREE_OP<X>_VAR_PTR()
|
||||
FREE_VAR_PTR(free_op<X>)
|
||||
|
||||
|
||||
Executor's helpers can be defined without parameters or with one parameter.
|
||||
Executor's helpers can be defined without parameters or with one parameter.
|
||||
This is done with the following constructs:
|
||||
|
||||
ZEND_VM_HELPER(<HELPER-NAME>, <OP1_TYPES>, <OP2_TYPES>)
|
||||
@@ -86,13 +86,13 @@ ZEND_VM_HELPER_EX(<HELPER-NAME>, <OP1_TYPES>, <OP2_TYPES>, <PARAM_SPEC>)
|
||||
}
|
||||
|
||||
Executor's code is generated by PHP script zend_vm_gen.php it uses zend_vm_def.h
|
||||
and zend_vm_execute.skl as input and produces zend_vm_opcodes.h and
|
||||
zend_vm_execute.h. The first file is a list of opcode definitions. It is
|
||||
and zend_vm_execute.skl as input and produces zend_vm_opcodes.h and
|
||||
zend_vm_execute.h. The first file is a list of opcode definitions. It is
|
||||
included from zend_compile.h. The second one is an executor code itself. It is
|
||||
included from zend_execute.c.
|
||||
|
||||
zend_vm_gen.php can produce different kind of executors. You can select
|
||||
different opcode threading model using --with-vm-kind=CALL|SWITCH|GOTO. You can
|
||||
zend_vm_gen.php can produce different kind of executors. You can select
|
||||
different opcode threading model using --with-vm-kind=CALL|SWITCH|GOTO. You can
|
||||
disable opcode specialization using --without-specializer. You can include or
|
||||
exclude old executor together with specialized one using --without-old-executor.
|
||||
At last you can debug executor using original zend_vm_def.h or generated file
|
||||
|
||||
@@ -58,7 +58,6 @@ sys/time.h \
|
||||
signal.h \
|
||||
unix.h \
|
||||
stdlib.h \
|
||||
cpuid.h \
|
||||
dlfcn.h)
|
||||
|
||||
AC_TYPE_SIZE_T
|
||||
@@ -596,21 +595,3 @@ dnl This is the most probable fallback so we assume yes in case of cross compile
|
||||
if test "$ac_cv_huge_val_nan" = "yes"; then
|
||||
AC_DEFINE([HAVE_HUGE_VAL_NAN], 1, [whether HUGE_VAL + -HUGEVAL == NAN])
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl Check whether __cpuid_count is available
|
||||
dnl
|
||||
AC_CACHE_CHECK(whether __cpuid_count is available, ac_cv_cpuid_count_available, [
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <cpuid.h>
|
||||
]], [[
|
||||
unsigned eax, ebx, ecx, edx;
|
||||
__cpuid_count(0, 0, eax, ebx, ecx, edx);
|
||||
]])], [
|
||||
ac_cv_cpuid_count_available=yes
|
||||
], [
|
||||
ac_cv_cpuid_count_available=no
|
||||
])])
|
||||
if test "$ac_cv_cpuid_count_available" = "yes"; then
|
||||
AC_DEFINE([HAVE_CPUID_COUNT], 1, [whether __cpuid_count is available])
|
||||
fi
|
||||
+5
-5
@@ -5,18 +5,18 @@ if (function_exists("date_default_timezone_set")) {
|
||||
|
||||
function simple() {
|
||||
$a = 0;
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
$a++;
|
||||
|
||||
$thisisanotherlongname = 0;
|
||||
for ($thisisalongname = 0; $thisisalongname < 1000000; $thisisalongname++)
|
||||
for ($thisisalongname = 0; $thisisalongname < 1000000; $thisisalongname++)
|
||||
$thisisanotherlongname++;
|
||||
}
|
||||
|
||||
/****/
|
||||
|
||||
function simplecall() {
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
strlen("hallo");
|
||||
}
|
||||
|
||||
@@ -26,14 +26,14 @@ function hallo($a) {
|
||||
}
|
||||
|
||||
function simpleucall() {
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
hallo("hallo");
|
||||
}
|
||||
|
||||
/****/
|
||||
|
||||
function simpleudcall() {
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
for ($i = 0; $i < 1000000; $i++)
|
||||
hallo2("hallo");
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ aclocal.m4: configure.ac acinclude.m4
|
||||
aclocal
|
||||
|
||||
$(config_h_in): configure.ac
|
||||
# explicitly remove target since autoheader does not seem to work
|
||||
# explicitly remove target since autoheader does not seem to work
|
||||
# correctly otherwise (timestamps are not updated)
|
||||
@rm -f $@
|
||||
autoheader
|
||||
|
||||
@@ -30,3 +30,4 @@ if cmp configure.old configure > /dev/null 2>&1; then
|
||||
else
|
||||
echo "buildconf: created or modified ${1}configure"
|
||||
fi
|
||||
|
||||
@@ -4,12 +4,12 @@ function hallo() {
|
||||
}
|
||||
|
||||
function simpleucall($n) {
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
hallo();
|
||||
}
|
||||
|
||||
function simpleudcall($n) {
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
hallo2();
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ function hallo2() {
|
||||
}
|
||||
|
||||
function simpleicall($n) {
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
for ($i = 0; $i < $n; $i++)
|
||||
func_num_args();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ var_dump(func_num_args());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
int(0)
|
||||
int(1)
|
||||
Exception: Too few arguments to function test2(), 0 passed in %s001.php on line 18 and exactly 1 expected
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ var_dump(func_get_arg(1));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: func_get_arg(): The argument number should be >= 0 in %s on line %d
|
||||
bool(false)
|
||||
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ var_dump(func_get_args());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
array(0) {
|
||||
}
|
||||
array(1) {
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ var_dump(strncmp("qwerty", "qwerty123", 7));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: strncmp() expects exactly 3 parameters, 2 given in %s on line %d
|
||||
NULL
|
||||
int(0)
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ var_dump(strcasecmp("01", "01"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: strcasecmp() expects exactly 2 parameters, 1 given in %s on line %d
|
||||
NULL
|
||||
int(0)
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ var_dump(strncasecmp("01", "01", 1000));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: strncasecmp() expects exactly 3 parameters, 1 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ var_dump(each($a));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: each() expects exactly 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+3
-5
@@ -14,8 +14,7 @@ var_dump(define("[[[", 2));
|
||||
var_dump(define("test const", 3));
|
||||
var_dump(define("test const", 3));
|
||||
var_dump(define("test", array(1)));
|
||||
var_dump(define("test1", fopen(__FILE__, 'r')));
|
||||
var_dump(define("test2", new stdclass));
|
||||
var_dump(define("test1", new stdclass));
|
||||
|
||||
var_dump(constant(" "));
|
||||
var_dump(constant("[[["));
|
||||
@@ -23,7 +22,7 @@ var_dump(constant("test const"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: define() expects at least 2 parameters, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
@@ -43,9 +42,8 @@ bool(true)
|
||||
Notice: Constant test const already defined in %s on line %d
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
Warning: Constants may only evaluate to scalar values, arrays or resources in %s on line %d
|
||||
Warning: Constants may only evaluate to scalar values or arrays in %s on line %d
|
||||
bool(false)
|
||||
int(1)
|
||||
int(2)
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ $f1->testNull();
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Deprecated: Non-static method foo::bar() should not be called statically in %s on line %d
|
||||
string(3) "foo"
|
||||
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ var_dump(get_parent_class(1));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
bool(false)
|
||||
string(3) "foo"
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ $bar->test();
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: property_exists() expects exactly 2 parameters, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ var_dump(class_exists("stdClass"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: class_exists() expects at least 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
bool(false)
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ var_dump(interface_exists("stdClass"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: interface_exists() expects at least 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
bool(false)
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ var_dump(get_included_files());
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(%d) "%s"
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ var_dump(trigger_error("error", E_USER_DEPRECATED));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: trigger_error() expects at least 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+2
-2
@@ -3,10 +3,10 @@ isset() with object properties when operating on non-object
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$foo = NULL;
|
||||
$foo = NULL;
|
||||
isset($foo->bar->bar);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
Done
|
||||
+1
-1
@@ -43,7 +43,7 @@ var_dump(count(get_extension_funcs("zend")));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: get_resource_type() expects exactly 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ var_dump(constant("TEST_CONST2"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: constant() expects exactly 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+52
-52
@@ -16,7 +16,7 @@ echo "*** Testing unset(), empty() & isset() with scalar variables ***\n";
|
||||
|
||||
// testing scalar variables
|
||||
$scalar_variables = array(
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
+1
|
||||
-1,
|
||||
@@ -52,23 +52,23 @@ foreach ($scalar_variables as $scalar_var) {
|
||||
echo "-- Iteration $loop_counter --\n"; $loop_counter++;
|
||||
|
||||
// checking with isset before unsetting, expected: bool(true)
|
||||
var_dump( isset($scalar_var) );
|
||||
var_dump( isset($scalar_var, $set_var) );
|
||||
var_dump( isset($scalar_var) );
|
||||
var_dump( isset($scalar_var, $set_var) );
|
||||
// checking if the var is empty, expected: bool(false) on most
|
||||
// except "", 0, "0", NULL, FALSE
|
||||
var_dump( empty($scalar_var) );
|
||||
|
||||
var_dump( empty($scalar_var) );
|
||||
|
||||
// destroy the variable using unset
|
||||
unset( $scalar_var );
|
||||
// dump and see if its destroyed, expcted: NULL
|
||||
var_dump( $scalar_var );
|
||||
unset( $scalar_var );
|
||||
// dump and see if its destroyed, expcted: NULL
|
||||
var_dump( $scalar_var );
|
||||
|
||||
// check using isset to see if unset, expected: bool(false)
|
||||
var_dump( isset($scalar_var) );
|
||||
var_dump( isset($scalar_var, $set_var) );
|
||||
var_dump( isset($scalar_var) );
|
||||
var_dump( isset($scalar_var, $set_var) );
|
||||
|
||||
// empty to check if empty, expecting bool(true)
|
||||
var_dump( empty($scalar_var) );
|
||||
var_dump( empty($scalar_var) );
|
||||
|
||||
// isset() with two args, one arg only unset, expected: bool(false)
|
||||
var_dump( isset($scalar_var, $set_var) );
|
||||
@@ -90,36 +90,36 @@ $array_variables = array(
|
||||
array(1 => "One", 2 => "two"),
|
||||
array("Name" => "Jack", "Age" => "30"),
|
||||
array(1,2, "One" => "1", 2 => "two", ""=>"empty", "" => '')
|
||||
);
|
||||
);
|
||||
|
||||
$outer_loop_counter = 1;
|
||||
foreach ($array_variables as $array_var) {
|
||||
echo "--- Outerloop Iteration $outer_loop_counter ---\n";
|
||||
|
||||
|
||||
// check the isset and unset on non existing key
|
||||
$var = 1; // a var which is defined
|
||||
// try to unset the element which is non-existent
|
||||
unset($array_var['non_existent']);
|
||||
unset($array_var['non_existent']);
|
||||
// check using isset() & empty() on a non_existent element in the array
|
||||
var_dump( isset($array_var['non_existent']) );
|
||||
var_dump( isset($array_var['non_existent'], $var) );
|
||||
var_dump( isset($array_var['non_existent'], $array_var['none']) );
|
||||
var_dump( empty($array_var['non_existent']) );
|
||||
|
||||
// testing empty and isset on arrays
|
||||
// testing empty and isset on arrays
|
||||
var_dump( empty($array_var) ); // expecting bool(false), except: array(), which is considered empty
|
||||
var_dump( isset($array_var) ); // expecting bool(true), except: array(), which is not set
|
||||
|
||||
// get the keys of the $array_var
|
||||
// get the keys of the $array_var
|
||||
$keys = array_keys($array_var);
|
||||
// unset each element in the array and see the working of unset, isset & empty
|
||||
$inner_loop_counter = 1;
|
||||
foreach ($keys as $key_value) {
|
||||
echo "-- Innerloop Iteration $inner_loop_counter of Outerloop Iteration $outer_loop_counter --\n";
|
||||
echo "-- Innerloop Iteration $inner_loop_counter of Outerloop Iteration $outer_loop_counter --\n";
|
||||
$inner_loop_counter++;
|
||||
|
||||
// unset the element
|
||||
unset($array_var[$key_value]);
|
||||
unset($array_var[$key_value]);
|
||||
// dump the array after element was unset
|
||||
var_dump($array_var);
|
||||
// check using isset for the element that was unset
|
||||
@@ -127,10 +127,10 @@ foreach ($array_variables as $array_var) {
|
||||
// calling isset with more args
|
||||
var_dump( isset($array_var[$key_val], $array_var) ); //expected: bool(false)
|
||||
|
||||
// calling empty, expected bool(true)
|
||||
// calling empty, expected bool(true)
|
||||
var_dump( empty($array_var[$key_val]) );
|
||||
|
||||
// dump the array to see that that array did not get modified
|
||||
// dump the array to see that that array did not get modified
|
||||
// because of using isset, empty and unset on its element
|
||||
var_dump($array_var);
|
||||
}
|
||||
@@ -144,7 +144,7 @@ foreach ($array_variables as $array_var) {
|
||||
// use isset to see that array is not set
|
||||
var_dump( isset($array_var) ); //expected: bool(false)
|
||||
var_dump( isset($array_var, $array_var[$key_val]) ); // expected: bool(false)
|
||||
|
||||
|
||||
// empty() to see if the array is empty
|
||||
var_dump( empty($array_var) ); // expected: bool(true)
|
||||
}
|
||||
@@ -183,12 +183,12 @@ foreach ($resources as $resource) {
|
||||
unset($temp_var);
|
||||
// now the isset() with both the args as unset
|
||||
var_dump( isset($resource, $temp_var) ); // expected: bool(false);
|
||||
|
||||
// dump the resource to see if there any effect on it
|
||||
|
||||
// dump the resource to see if there any effect on it
|
||||
var_dump($resource);
|
||||
}
|
||||
// unset and dump the array containing all the resources to see that
|
||||
// unset works correctly
|
||||
// unset works correctly
|
||||
unset($resources);
|
||||
var_dump($resources);
|
||||
var_dump( isset($resources) ); //expected: bool(false)
|
||||
@@ -200,12 +200,12 @@ class Point
|
||||
var $x;
|
||||
var $y;
|
||||
var $lable;
|
||||
|
||||
|
||||
function __construct($x, $y) {
|
||||
$this->x = $x;
|
||||
$this->y = $y;
|
||||
}
|
||||
|
||||
|
||||
function setLable($lable) {
|
||||
$this->lable = $lable;
|
||||
}
|
||||
@@ -215,8 +215,8 @@ class Point
|
||||
}
|
||||
$point1 = new Point(30,40);
|
||||
|
||||
// use unset/empty/isset to check the object
|
||||
var_dump($point1); // dump the object
|
||||
// use unset/empty/isset to check the object
|
||||
var_dump($point1); // dump the object
|
||||
|
||||
// check the object and member that is not set
|
||||
var_dump( isset($point1) ); // expected: bool(true)
|
||||
@@ -229,7 +229,7 @@ $point1->setLable("Point1");
|
||||
var_dump( isset($point1->$lable) ); //expected: bool(true)
|
||||
var_dump( empty($point1->$lable) ); //expected: bool(false)
|
||||
|
||||
// dump the object to see that obj was not harmed
|
||||
// dump the object to see that obj was not harmed
|
||||
// because of the usage of the isset & empty
|
||||
var_dump($point1);
|
||||
|
||||
@@ -270,36 +270,36 @@ var_dump($point2);
|
||||
|
||||
/* testing variation in operation for isset(), empty() & unset().
|
||||
Note: Most of the variation for function unset() is testing by a
|
||||
set of testcases named "Zend/tests/unset_cv??.phpt", only
|
||||
set of testcases named "Zend/tests/unset_cv??.phpt", only
|
||||
variation not tested are attempted here */
|
||||
|
||||
echo "\n*** Testing possible variation in operation for isset(), empty() & unset() ***\n";
|
||||
/* unset() variation1: checking unset on static variable inside a function.
|
||||
/* unset() variation1: checking unset on static variable inside a function.
|
||||
* unset() destroys the variable only in the context of the rest of a function
|
||||
* Following calls will restore the previous value of a variable.
|
||||
*/
|
||||
echo "\n** Testing unset() variation 1: unset on static variable inside a function **\n";
|
||||
function test_unset1() {
|
||||
static $static_var;
|
||||
|
||||
|
||||
// increment the value of the static. this change is in function context
|
||||
$static_var ++;
|
||||
|
||||
echo "value of static_var before unset: $static_var\n";
|
||||
// check using isset and empty
|
||||
|
||||
echo "value of static_var before unset: $static_var\n";
|
||||
// check using isset and empty
|
||||
var_dump( isset($static_var) );
|
||||
var_dump( empty($static_var) );
|
||||
|
||||
|
||||
// unset the static var
|
||||
unset($static_var);
|
||||
echo "value of static_var after unset: $static_var\n";
|
||||
// check using isset and empty
|
||||
echo "value of static_var after unset: $static_var\n";
|
||||
// check using isset and empty
|
||||
var_dump( isset($static_var) );
|
||||
var_dump( empty($static_var) );
|
||||
|
||||
// assign a value to static var
|
||||
$static_var = 20;
|
||||
echo "value of static_var after new assignment: $static_var\n";
|
||||
echo "value of static_var after new assignment: $static_var\n";
|
||||
}
|
||||
// call the functiont
|
||||
test_unset1();
|
||||
@@ -308,10 +308,10 @@ test_unset1();
|
||||
|
||||
|
||||
echo "\n** Testing unset() variation 2: unset on a variable passed by ref. inside of a function **\n";
|
||||
/* unset() variation2: Pass by reference
|
||||
* If a variable that is PASSED BY REFERENCE is unset() inside of a function,
|
||||
/* unset() variation2: Pass by reference
|
||||
* If a variable that is PASSED BY REFERENCE is unset() inside of a function,
|
||||
* only the local variable is destroyed. The variable in the calling environment
|
||||
* will retain the same value as before unset() was called.
|
||||
* will retain the same value as before unset() was called.
|
||||
*/
|
||||
function test_unset2( &$ref_val ) {
|
||||
// unset the variable passed
|
||||
@@ -329,7 +329,7 @@ var_dump($value);
|
||||
test_unset2($value);
|
||||
var_dump($value);
|
||||
|
||||
|
||||
|
||||
echo "\n** Testing unset() variation 3: unset on a global variable inside of a function **\n";
|
||||
/* unset() variation2: unset on a global variable inside a function
|
||||
* If a globalized variable is unset() inside of a function, only the
|
||||
@@ -340,17 +340,17 @@ $global_var = 10;
|
||||
|
||||
function test_unset3() {
|
||||
global $global_var;
|
||||
|
||||
// check the $global_var using isset and empty
|
||||
var_dump( isset($global_var) );
|
||||
var_dump( empty($global_var) );
|
||||
|
||||
|
||||
// check the $global_var using isset and empty
|
||||
var_dump( isset($global_var) );
|
||||
var_dump( empty($global_var) );
|
||||
|
||||
// unset the global var
|
||||
unset($global_var);
|
||||
|
||||
// check the $global_var using isset and empty
|
||||
var_dump( isset($global_var) );
|
||||
var_dump( empty($global_var) );
|
||||
|
||||
// check the $global_var using isset and empty
|
||||
var_dump( isset($global_var) );
|
||||
var_dump( empty($global_var) );
|
||||
}
|
||||
|
||||
var_dump($global_var);
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ foo(1,2);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Warning: func_get_arg() expects exactly 1 parameter, 3 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
||||
+4
-4
@@ -7,7 +7,7 @@ class foo {
|
||||
public $test = 0;
|
||||
private $test_2 = 1;
|
||||
protected $test_3 = 2;
|
||||
|
||||
|
||||
public function bar() {
|
||||
try {
|
||||
throw new Exception('foo');
|
||||
@@ -15,13 +15,13 @@ class foo {
|
||||
var_dump($this);
|
||||
}
|
||||
|
||||
$this->baz();
|
||||
$this->baz();
|
||||
}
|
||||
|
||||
|
||||
public function baz() {
|
||||
foreach ($this as $k => $v) {
|
||||
printf("'%s' => '%s'\n", $k, $v);
|
||||
}
|
||||
}
|
||||
print "ok\n";
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Testing array with '[]' passed as argument by value
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
function test($var) { }
|
||||
test($arr[]);
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Testing array with '[]' passed as argument by reference
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
function test(&$var) { }
|
||||
test($arr[]);
|
||||
|
||||
+2
-1
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Using undefined multidimensional array
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
$arr[1][2][3][4][5];
|
||||
|
||||
@@ -17,6 +17,7 @@ $arr[][]->bar = 2;
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
Notice: Undefined variable: arr in %s on line %d
|
||||
|
||||
Notice: Undefined variable: arr in %s on line %d
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Testing multiples 'default:' in switch
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
switch (1) {
|
||||
case 2:
|
||||
|
||||
@@ -649,7 +649,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -665,7 +665,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -681,7 +681,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -698,7 +698,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -714,7 +714,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -730,7 +730,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -746,7 +746,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -762,7 +762,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -778,7 +778,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -794,7 +794,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -810,7 +810,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -826,7 +826,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -842,7 +842,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -858,7 +858,7 @@ try {
|
||||
var_dump($e->getPrevious() === NULL);
|
||||
var_dump($e->getFile() === __FILE__);
|
||||
var_dump($e->getTraceAsString() === EXCEPTION_TRACE_AS_STRING_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -9,4 +9,5 @@ abstract class TestClass
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECT--
|
||||
|
||||
===DONE===
|
||||
@@ -8,5 +8,5 @@ abstract class B extends A { abstract function bar($x); }
|
||||
|
||||
echo "DONE";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
DONE
|
||||
@@ -8,5 +8,5 @@ abstract class B extends A { abstract function bar($x, $y = 0); }
|
||||
|
||||
echo "DONE";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
DONE
|
||||
@@ -8,5 +8,5 @@ abstract class B extends A { abstract function bar($x); }
|
||||
|
||||
echo "DONE";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Declaration of B::bar($x) must be compatible with A::bar($x, $y = 0) in %s
|
||||
@@ -10,5 +10,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple access type modifiers are not allowed in %s on line %d
|
||||
@@ -9,5 +9,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple access type modifiers are not allowed in %s on line %d
|
||||
@@ -9,5 +9,5 @@ final final class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple final modifiers are not allowed in %s on line %d
|
||||
@@ -10,5 +10,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple abstract modifiers are not allowed in %s on line %d
|
||||
@@ -10,5 +10,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple final modifiers are not allowed in %s on line %d
|
||||
@@ -10,5 +10,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Multiple static modifiers are not allowed in %s on line %d
|
||||
@@ -9,5 +9,5 @@ class test {
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Fatal error: Cannot use the final modifier on an abstract class member in %s on line %d
|
||||
@@ -21,7 +21,7 @@ abstract class b extends a {
|
||||
class c extends b {
|
||||
public function __construct() {
|
||||
$this->test();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
new c;
|
||||
|
||||
@@ -32,7 +32,7 @@ echo $a->func1(),"\n";
|
||||
echo $a->func2(),"\n";
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
var1 value
|
||||
var2 value
|
||||
in func1
|
||||
|
||||
@@ -29,7 +29,7 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
|
||||
@@ -19,7 +19,7 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Notice: Object of class stdClass could not be converted to number in %sadd_002.php on line %d
|
||||
|
||||
Exception: Unsupported operand types
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
adding arrays to objects
|
||||
adding arrays to objects
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
@@ -19,7 +19,7 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Notice: Object of class stdClass could not be converted to number in %sadd_003.php on line %d
|
||||
|
||||
Exception: Unsupported operand types
|
||||
|
||||
@@ -16,7 +16,7 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Exception: Unsupported operand types
|
||||
|
||||
Fatal error: Uncaught Error: Unsupported operand types in %s:%d
|
||||
|
||||
@@ -16,7 +16,7 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
float(2834756759.1231)
|
||||
float(2834756759.1231)
|
||||
Done
|
||||
@@ -37,7 +37,8 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
|
||||
Warning: A non-numeric value encountered in %s on line %d
|
||||
int(75636)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--TEST--
|
||||
adding strings to arrays
|
||||
adding strings to arrays
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
@@ -18,7 +18,8 @@ var_dump($c);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
|
||||
Warning: A non-numeric value encountered in %s on line %d
|
||||
|
||||
Exception: Unsupported operand types
|
||||
|
||||
@@ -30,7 +30,7 @@ var_dump($s);
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
--EXPECT--
|
||||
string(3) "020"
|
||||
string(4) "pead"
|
||||
string(4) "pead"
|
||||
|
||||
@@ -6,3 +6,5 @@ var_dump(new class{});
|
||||
--EXPECTF--
|
||||
object(class@%s)#%d (0) {
|
||||
}
|
||||
|
||||
|
||||
@@ -18,3 +18,4 @@ var_dump($a instanceof A, $a instanceof B);
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
@@ -51,3 +51,4 @@ object(class@%s)#1 (1) {
|
||||
["i"]=>
|
||||
int(10)
|
||||
}
|
||||
|
||||
@@ -12,3 +12,4 @@ namespace {
|
||||
--EXPECTF--
|
||||
object(class@%s)#1 (0) {
|
||||
}
|
||||
|
||||
@@ -20,3 +20,4 @@ namespace lone {
|
||||
--EXPECTF--
|
||||
object(class@%s)#2 (0) {
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
--TEST--
|
||||
Testing calls to anonymous function
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$a = create_function('', 'return '. $i .';');
|
||||
var_dump($a());
|
||||
|
||||
|
||||
$b = "\0lambda_". ($i + 1);
|
||||
var_dump($b());
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Testing anonymous function return as array key and accessing $GLOBALS
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
$test = create_function('$v', 'return $v;');
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Using throw $var with anonymous function return
|
||||
--FILE--
|
||||
<?php
|
||||
<?php
|
||||
|
||||
try {
|
||||
$a = create_function('', 'return new Exception("test");');
|
||||
|
||||
@@ -4,12 +4,12 @@ Bug #55719 (Argument restriction should come with a more specific error message)
|
||||
<?php
|
||||
Class Base {
|
||||
public function &test($foo, array $bar, $option = NULL, $extra = "lllllllllllllllllllllllllllllllllllllllllllllllllll") {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Sub extends Base {
|
||||
public function &test() {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
@@ -4,12 +4,12 @@ Bug #55719 (Argument restriction should come with a more specific error message)
|
||||
<?php
|
||||
Abstract Class Base {
|
||||
public function test($foo, array &$bar, $option = NULL, $extra = 3.141592653589793238462643383279502884197169399375105 ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Sub extends Base {
|
||||
public function test($foo, array &$bar) {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
@@ -7,12 +7,12 @@ class Foo {
|
||||
|
||||
Abstract Class Base {
|
||||
public function test(Foo $foo, array $bar, $option = NULL, $extra = "lllllllllllllllllllllllllllllllllllllllllllllllllll") {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Sub extends Base {
|
||||
public function test() {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
@@ -11,7 +11,7 @@ Abstract Class Base {
|
||||
|
||||
class Sub extends Base {
|
||||
public function test(Foo $foo, array $bar, $option = NULL, $extra = 0xffffff ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
@@ -4,7 +4,7 @@ Bug #55719 (Argument restriction should come with a more specific error message)
|
||||
<?php
|
||||
class Sub implements ArrayAccess {
|
||||
public function offsetSet() {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
@@ -4,12 +4,12 @@ Bug #60174 (Notice when array in method prototype error)
|
||||
<?php
|
||||
Abstract Class Base {
|
||||
public function test($foo, $extra = array("test")) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Sub extends Base {
|
||||
public function test($foo, $extra) {
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
--EXPECTF--
|
||||
|
||||
@@ -10,7 +10,7 @@ Ensure "undefined offset" notice formats message corectly when undefined key is
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
--EXPECTF--
|
||||
Notice: Undefined offset: -1 in %s on line 3
|
||||
|
||||
Notice: Undefined offset: -1 in %s on line 4
|
||||
|
||||
@@ -8,4 +8,4 @@ assert.exception=1
|
||||
var_dump(assert(false));
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
Loaded 100 of 9902 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user