PHP: замена команды Eval

В PHP версиях до 7.1, в некоторых скриптах используется команда Eval, позволяющая выполнить переданный на входе текст, как команду PHP. В последующих версия PHP, данная команда помечена как Deprecated. При апргрейде, соответственно часть скриптов перестают работать. Вот моё решение по замене:

function eval($str){
 file_put_content("tmp.php",$str);
 include 'tmp.php';
}

P.S. Совсем если честно не понял зачем было удалять эту команду из за «безопасности», если тому кому нужно вполне заменят её подобным костылём как у меня. Моё мнение: любое обновление не должно ломать старый код, исключения — крайние случаи. Этот случай явно не крайний.

Android: startActivityForResult deprecated

С очередным обновлением Android Studio опять прилетели новые deprecated. На этот раз для startActivityForResult. У меня сия конструкция используется для обработки выбора файла в компоненте WebView. Соответственно изменим:

ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
                    new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {
                        @Override
                        public void onActivityResult(ActivityResult result) {

                            Intent data = result.getData();
                            Uri uri = data.getData();

                            if (result.getResultCode() == REQUEST_SELECT_FILE) {
                                if (uploadMessage == null) return;
                                uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(result.getResultCode(), data));
                                uploadMessage = null;
                            };
                            if (result.getResultCode() == FILECHOOSER_RESULTCODE) {
                                if (null == mUploadMessage) return;
                                Uri result2 = data == null || result.getResultCode() != MainActivity.RESULT_OK ? null : data.getData();
                                mUploadMessage.onReceiveValue(result2);
                                mUploadMessage = null;
                            }
                        }
                    });

            // For Lollipop 5.0+ Devices
            public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
                if (uploadMessage != null) {
                    uploadMessage.onReceiveValue(null);
                    uploadMessage = null;
                }
                uploadMessage = filePathCallback;
                Intent intent = null;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                    intent = fileChooserParams.createIntent();
                }
                try {
                    someActivityResultLauncher.launch(intent);
                   // startActivityForResult(intent, REQUEST_SELECT_FILE);
                } catch (ActivityNotFoundException e) {
                    uploadMessage = null;
                    return false;
                }
                return true;
            }



            protected void openFileChooser(ValueCallback<Uri> uploadMsg) {
                mUploadMessage = uploadMsg;
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("image/*");

              //  startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);


                someActivityResultLauncher.launch(Intent.createChooser(i, "File Chooser"));

            }

        });

Handler deprecated в Android Studio 4.1

Теперь код вида:

Считается устаревшим. Меняем на:




Deprecated: The each() function is deprecated в PHP 7.2

При переносе кода из PHP 5.4 на PHP 7.2 в libmail.php словил следующую ошибку:

Код:

Ну в принципе достаточно заменить его на:

 и

на