Giá trị mặc định của Php nếu null

Tôi thích giải pháp thứ hai. Nhược điểm duy nhất là giao diện không hiển thị rõ ràng giá trị nào được chấp nhận

Câu trả lời hay nhất

Với PHP7. 1 nó thực sự khá đơn giản

public function setValue(?string $value)
{
    $this->value = $value;
}

hoặc khi bạn muốn nó mặc định là null khi gọi nó là $object->setValue();

public function setValue(string $value = null)
{
    $this->value = $value;
}

Giải pháp liên quan

Cơ sở dữ liệu – SQL. chuỗi rỗng so với giá trị NULL

Tôi sẽ nói rằng NULL là lựa chọn chính xác cho "không có địa chỉ email". Có nhiều địa chỉ email "không hợp lệ" và "" (chuỗi trống) chỉ là một. Ví dụ: "foo" không phải là địa chỉ email hợp lệ, "a@b@c" không hợp lệ, v.v. Vì vậy, chỉ vì "" không phải là địa chỉ email hợp lệ thì không có lý do gì để sử dụng nó làm giá trị "không có địa chỉ email"

Tôi nghĩ bạn đúng khi nói rằng "" không phải là cách chính xác để nói "Tôi không có giá trị cho cột này". "" là một giá trị

Một ví dụ về nơi "" có thể là một giá trị hợp lệ, tách biệt với NULL có thể là tên đệm của một người. Không phải ai cũng có tên đệm nên bạn cần phân biệt giữa "không có tên đệm" ("" - chuỗi rỗng) và "Tôi không biết người này có tên đệm hay không" (NULL). Có thể có nhiều ví dụ khác trong đó một chuỗi rỗng vẫn là một giá trị hợp lệ cho một cột

Java – Kiểm tra các tham số được chú thích bằng @Nonnull để tìm null

Nếu bạn không tin tưởng FindBug, đó có thể là một tùy chọn để sử dụng xác nhận. Bằng cách này, bạn tránh được các sự cố được đề cập bởi Người dùng MSalters nhưng vẫn kiểm tra. Tất nhiên, cách tiếp cận này có thể không áp dụng được nếu cách tiếp cận thất bại nhanh như vậy là không khả thi, tôi. e. bạn phải nắm bắt bất kỳ ngoại lệ nào

Và để trả lời thêm câu hỏi liệu đó có phải là thông lệ xấu hay không. Vâng, điều này có thể tranh cãi nhưng tôi sẽ không nghĩ như vậy. Tôi coi chú thích FindBug này như một thông số kỹ thuật nhẹ theo nguyên tắc thiết kế theo hợp đồng

Trong thiết kế theo hợp đồng, bạn thiết lập một hợp đồng giữa một phương thức và người gọi nó. Hợp đồng bao gồm các điều kiện tiên quyết mà người gọi đồng ý thực hiện khi gọi phương thức và một điều kiện sau sẽ được phương thức đáp ứng sau khi thực hiện nếu điều kiện tiên quyết của nó được đáp ứng

Một trong những lợi ích của phương pháp phát triển này là bạn có thể tránh được cái gọi là phong cách lập trình phòng thủ (trong đó bạn kiểm tra tất cả các giá trị tham số không hợp lệ một cách rõ ràng, v.v. ). Thay vào đó, bạn có thể dựa vào hợp đồng và tránh kiểm tra dư thừa để tăng hiệu suất và khả năng đọc

Hợp đồng có thể được sử dụng để kiểm tra xác nhận thời gian chạy tuân theo nguyên tắc đầu tiên không thành công đã đề cập ở trên, trong đó bạn muốn chương trình của mình không thành công nếu hợp đồng bị phá vỡ, giúp bạn có manh mối để xác định nguồn gốc của lỗi. (Điều kiện tiên quyết không thành công có nghĩa là người gọi đã làm sai điều gì đó, điều kiện sau thất bại biểu thị lỗi triển khai của phương thức đã cho)

Hơn nữa, các hợp đồng có thể được sử dụng để phân tích tĩnh, cố gắng đưa ra kết luận về mã nguồn mà không thực sự chạy nó.

Chú thích @nonnull có thể được coi là điều kiện tiên quyết được sử dụng để phân tích tĩnh bằng công cụ FindBugs. Nếu bạn thích một cách tiếp cận như kiểm tra xác nhận thời gian chạy, tôi. e. chiến lược đầu tiên không thành công, bạn nên cân nhắc sử dụng các câu lệnh khẳng định dưới dạng Java tích hợp. Hoặc có thể để thích ứng với chiến lược đặc tả phức tạp hơn bằng cách sử dụng ngôn ngữ đặc tả giao diện hành vi, chẳng hạn như Ngôn ngữ mô hình hóa Java (JML)

JML là một phần mở rộng của Java trong đó đặc tả được nhúng trong các Nhận xét Java đặc biệt. Một lợi thế của phương pháp này là bạn có thể sử dụng đặc tả phức tạp, thậm chí sử dụng phương pháp phát triển trong đó bạn chỉ dựa vào đặc tả chứ không phải chi tiết triển khai và sử dụng các công cụ khác nhau sử dụng đặc tả, chẳng hạn như các công cụ kiểm tra xác nhận thời gian chạy đã đề cập,

Nếu bạn chia sẻ quan điểm của tôi về việc @nonnull là một hợp đồng (nhẹ), thông thường sẽ không thêm các kiểm tra bổ sung vì ý tưởng ban đầu đằng sau nguyên tắc này là để tránh lập trình phòng thủ

Cả hai sẽ phát sinh lỗi do chỉ mục không xác định (cả hai lần đầu tiên cố gắng lấy giá trị tại chỉ mục trước) nếu chỉ mục không được đặt. Đây là một điều nhỏ, nhưng ngay cả khi bạn đã tắt báo cáo lỗi VÀ ghi nhật ký, thì lỗi vẫn được nêu ra, được tạo và lan truyền qua ngăn xếp trước khi nó được kiểm tra xem có chỗ nào để báo cáo lỗi không. Và do đó, chỉ cần làm điều gì đó CÓ THỂ gây ra lỗi, sẽ gây ra hiệu suất

Hãy ghi nhớ điều này vì điều này áp dụng cho tất cả các Loại lỗi (Thông báo, Cảnh báo, v.v.) và trong các ứng dụng lớn có thể là một vấn đề lớn. Để tránh điều này, bạn phải sử dụng một hàm không gây ra lỗi khi thiếu chỉ mục, chẳng hạn như isset($array['index']) hoặc empty($array['index']) và không sử dụng dạng bậc ba rút gọn

Hãy thử một chức năng như

function apply_default(Array &$array, $path, $default) {
    // may need to be modified for your use-case
    preg_match_all("/\[['\"]*([^'\"]+)['\"]*\]/",$path,$matches);
    if(count($matches[1]) > 0) {
        $destinaion =& $array;
        foreach ($matches[1] as $key) {
            if (empty($destinaion[$key]) ) {
                $destinaion[$key] = array();
            }
            $destinaion =& $destinaion[$key];
        }
        if(empty($destinaion)) {
            $destinaion = $default;
            return TRUE;
        }
    }
    return FALSE;
}

$was_applied = apply_default($array,
    "['with a really long name']['and multiple']['indexes']",
    $default_value);

Điều này không gây ra lỗi và sẽ tạo đường dẫn nếu nó không tồn tại. Nó cũng được hưởng lợi từ việc hợp nhất logic để đặt giá trị mặc định ở một nơi, thay vì if ở mọi nơi

Như đã đề cập ở nơi khác, tùy chọn khác là

if(empty($array['key'])) {
    $array['key'] = $default;
}

Cái nào cũng tốt và có lẽ hiệu quả hơn

Tuy nhiên, tất cả những gì đã nói, lý tưởng nhất là điều này chỉ nên được xử lý trong dịch vụ tiêu dùng. Nếu giá trị trống, thì người tiêu dùng (dù là chế độ xem hay ứng dụng khách khác [như javascript]) sẽ được phép tự đưa ra lựa chọn này. Trên thực tế, dữ liệu ngữ nghĩa trống cho mô hình. Cách xử lý điều này tùy thuộc vào người tiêu dùng, nghĩa là, nếu điều này chuyển sang mẫu/chế độ xem, thì điều kiện phải được xử lý trong khi hiển thị. Nếu nó được gửi dưới dạng JSON, khách hàng sẽ có thể đưa ra lựa chọn

Bạn đang hỏi về phong cách, đó có lẽ là điều quan trọng nhất. Phong cách tốt nhất là, nếu bạn đang cung cấp dữ liệu cho khách hàng, đừng giả mạo nó (nhưng hãy ghi lại phản hồi trống có thể có)

LÀ NULL trong nếu điều kiện PHP?

Hàm is_null() kiểm tra xem một biến có phải là NULL hay không . Hàm này trả về true (1) nếu biến là NULL, ngược lại trả về false/nothing.

Làm cách nào để đặt giá trị mặc định trong PHP?

PHP cho phép bạn xác định các giá trị đối số mặc định kiểu C++. Trong trường hợp như vậy, nếu bạn không chuyển bất kỳ giá trị nào cho hàm, nó sẽ sử dụng giá trị đối số mặc định. .
chức năng sayXin chào($name="Ram"){
echo "Hello $name
";.
sayXin chào ("Sonoo");
sayHello();//không truyền giá trị
sayXin chào("Vimal");

Làm cách nào để gán giá trị NULL trong PHP?

Trong PHP, một biến không có giá trị được gọi là kiểu dữ liệu null. Một biến như vậy có một giá trị được xác định là NULL. Một biến có thể được gán rõ ràng NULL hoặc giá trị của nó được đặt thành null bằng cách sử dụng hàm unset() .