小编Hel*_*esh的帖子

为什么在setter方法中返回$ this?

通过检查Zend Framework,我发现所有setter方法(我已经检查过的方法)都会返回它所在类的实例.它不仅设置了一个值,还返回了它$this.例如:

  /*   Zend_Controller_Router   */
public function setGlobalParam($name, $value) {
    $this->_globalParams[$name] = $value;
    return $this;
}

  /*    Zend_Controller_Request    */
public function setBaseUrl($baseUrl = null) {
    // ... some code here ...
    $this->_baseUrl = rtrim($baseUrl, '/');
    return $this;
}

  /*    Zend_Controller_Action    */
public function setFrontController(Zend_Controller_Front $front) {
    $this->_frontController = $front;
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

等等.每个公共制定者都会回来$this.并且它不仅适用于setter,还有其他返回的操作方法$this:

public function addConfig(Zend_Config $config, $section = null) {
    // ... some code here ...
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

为什么需要这个?回来$this做什么?它有一些特殊含义吗?

php zend-framework return getter-setter

17
推荐指数
1
解决办法
9144
查看次数

计算li元素的数量并添加类

我正在尝试计算li元素,并addClass分配给另一个div。

例如:

$('.box2').addClass(function(){
  return 'list' + $(this).find('.box1 li').length;
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="box1">
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>


<div class="box2">text</div>
Run Code Online (Sandbox Code Playgroud)

这应该是这样的

<div class="box2 list3">text</div>
Run Code Online (Sandbox Code Playgroud)

但是我不知道为什么当我检查DOM代码时,

<div class="box2 list0">text</div>
Run Code Online (Sandbox Code Playgroud)

我得到这个结果。

我需要修改什么代码?请帮忙。

html javascript css jquery

16
推荐指数
4
解决办法
1287
查看次数

传值(StringBuilder vs String)

我不明白为什么System.out.println(name)输出Sam而不受方法的concat函数的影响,而System.out.println(names)输出Sam4作为方法的append方法的结果.为什么StringBuilder受影响而不是String?通常,在对对象的引用上调用方法会影响调用者,所以我不明白为什么String结果保持不变.提前致谢

public static String speak(String name) {
    name = name.concat("4");
    return name;
}

public static StringBuilder test(StringBuilder names) {
    names = names.append("4");
    return names; 
}

public static void main(String[] args) {
    String name = "Sam";
    speak(name);
    System.out.println(name); //Sam
    StringBuilder names = new StringBuilder("Sam");
    test(names);
    System.out.println(names); //Sam4
}
Run Code Online (Sandbox Code Playgroud)

java string stringbuilder parameter-passing pass-by-value

12
推荐指数
2
解决办法
4490
查看次数

使用RecyclerView下方的按钮添加RelativeLayout

我需要在RecyclerView下面添加一个RelativeLayout,并且能够这样做,除了TOTAL(R.id.total_amount_tv)下的按钮没有显示:

在此输入图像描述

我可以轻松滚动项目,它不会影响我的RelativeLayout.我只需要按钮就可以看到.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:weightSum="1">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/order_recycler"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="40dp"
        tools:context=".ShoppingCartActivity" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp">

        <TextView
            android:id="@+id/total_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:text="@string/total"
            android:textSize="20sp"
            android:textStyle="bold|italic" />

        <TextView
            android:id="@+id/total_amount_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/total_tv"
            android:textSize="20sp"
            android:textStyle="bold|italic" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_below="@+id/total_amount_tv"
            android:layout_marginTop="51dp"
            android:background="@color/accent"
            android:onClick="onClickSendOrder"
            android:text="@string/order_btn"
            android:textColor="@android:color/white"
            android:textSize="20sp" />
    </RelativeLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

android relativelayout android-layout android-recyclerview

10
推荐指数
1
解决办法
8920
查看次数

为什么多捕获RuntimeException编译但多捕获异常不?

在此示例中,第二个catch块无法访问,因此我的代码无法编译.但是,如果我使用LimpExceptionextend RuntimeException而不是Exception,则编译没有任何麻烦.为什么?

public class Finals {

  public void run() {
    try {
      spit();
    } catch (HurtException e) {
      System.out.println("");
    } catch (LimpException ex) { // does not compile, unreachable code
      System.out.println("");
    }
  }

  public void spit() throws HurtException { // method that throws the Exception
  }

  public static void main(String... args) {
  }
}

class LimpException extends Exception { // extends Exception vs extends
                                        // RuntimeException
}

class HurtException extends LimpException {
}
Run Code Online (Sandbox Code Playgroud)

java exception-handling

9
推荐指数
1
解决办法
184
查看次数

IntersectionObserver:找出元素何时位于视口之外

使用IntersectionObserver API,如何找出特定元素何时位于视口之外?

一旦用户滚动经过标题,并且标题不再位于视口内,我就需要输出控制台日志。我想使用IntersectionObserver而不是滚动事件监听器来最小化负载,因为它是异步工​​作的。到目前为止我的代码是:

let options = {
   root: null, //root
   rootMargin: '0px',
   threshold: 1.0,
 };

 function onChange(changes, observer) {
    changes.forEach(change => {
       if (change.intersectionRatio < 0) {
          console.log('Header is outside viewport');
        }
    });
  }

  let observer = new IntersectionObserver(onChange, options);

  let target = document.querySelector('#header');
  observer.observe(target);
Run Code Online (Sandbox Code Playgroud)

此代码不输出任何控制台日志。PS:我的<header>元素的 ID 为header.

javascript intersection-observer

5
推荐指数
1
解决办法
4933
查看次数

传值和多态

我对编程很新,并且不理解为什么这段代码打印200而不是206.类Cat中的move方法会覆盖Animal类中的move方法.为什么在第2行的方法调用后,Animals中的'location'实例变量不会更改为206?但是,当我删除类Cat中的方法时,实例变量DOES会更改为206.它背后的逻辑是什么?

public  class Animals {
   int location = 200; //line 1

   public void move(int by) {
       location = location+by;
   }

    public final static void main (String...args) {
        Animals a = new Cat();
        a.move(6); //line 2
        System.out.println(a.location); //200, but should print 206 in my opinion
    }
}

class Cat extends Animals {
    int location = 400;

    @Override
    public void move(int by) { //if this method is removed, a.location prints 206
        location = location+by;
    }
}
Run Code Online (Sandbox Code Playgroud)

java polymorphism inheritance pass-by-value

3
推荐指数
1
解决办法
123
查看次数

Doctrine:选择不受doctrine管理的表

使用 Doctrine QueryBuilder,我想执行一个查询,在本机 SQL 中如下所示:

`SELECT image FROM image i INNER JOIN about_images a ON i.id = a.image_id`;
Run Code Online (Sandbox Code Playgroud)

DQL中的结果如下:

图像库.php

return $this->createQueryBuilder('i')
        ->select('i')
        ->innerJoin('about_images', 'a', 'WITH', 'i.id = a.imageId')
        ->getQuery()
        ->getResult();
Run Code Online (Sandbox Code Playgroud)

其中image是实体,about_images是连接表(关系的结果@ManyToMany)。然而,我得到了未定义的错误about_images,这是有道理的,因为它不是由学说管理的。

AboutPage.php(即创建联接表的实体)

  /**
     * @var Image[]|ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="App\Entity\Image", cascade={"persist", "remove"})
     * @ORM\JoinTable(name="about_images",
     *     joinColumns={@ORM\JoinColumn(name="about_id", referencedColumnName="id")},
     *     inverseJoinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id", unique=true)})
   */
    private $images;
Run Code Online (Sandbox Code Playgroud)

来自图像实体的字段:

    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /** …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm

2
推荐指数
1
解决办法
2571
查看次数

NIO.2:了解relativize()方法

我正在努力了解该java.nio.file.Path.relativize()方法。我也知道有人问过类似的问题,但是答案并没有帮助我理解这个概念。

考虑以下代码片段:

Path path = Paths.get("/Users/somename/documents/Test/cat.html");
Path path2 = Paths.get("/documents/Test/cat.html");
System.out.println((path.relativize(path2))); //output: ../../../../../documents/Test/cat.html
Run Code Online (Sandbox Code Playgroud)

有人可以使用逐步方法向我解释该relativize()方法在此示例中的工作方式吗?为什么需要上5个目录?

java nio java.nio.file

1
推荐指数
1
解决办法
468
查看次数

VueJS Datepicker:如何动态禁用日期?

我正在将vue-hotel-datepicker库实现到我的项目中,并希望在进行ajax调用后动态地将日期添加到disabledDates属性,但我的实现似乎不起作用.当我使用Vue devtools进行调试时,我可以清楚地看到disabledDates数组包含正确的日期,它只是不会将它们渲染为"禁用".它在我硬编码这些日期时有效.

模板:

<datepicker
     :disabledDates="disabledDates" 
     :firstDayOfWeek="1"                
    >
</datepicker>
Run Code Online (Sandbox Code Playgroud)

JS:

data() {
   return {
      disabledDates: this.fetchBookedDates() //contains correct data, see screenshot below
    }
},
methods: {
    fetchBookedDates() {
       window.fetch(Routing.generate('bookings'))
         .then(response => response.json())
         .then(data => this.disabledDates = data['period'])
         .catch((error) => console.log(error));
      }
}
Run Code Online (Sandbox Code Playgroud)

调试步骤:Vue devtools disabledDates在页面加载时立即显示来自我的提取调用,但仍然在我的datepicker上启用了所有日期:

在此输入图像描述

硬编码(有效):

当我硬编码了几个日期,它确实显示我的日期为"已禁用":

data() {
   return {
     disabledDates: ['2019-02-03', '2019-02-04']
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Vue devtools中获得与动态添加它们时相同的结果(也在页面加载时):

在此输入图像描述

我的实施有什么问题,我应该如何解决这个问题?

编辑

HotelDatePicker组件是从我的库生成的,其中包含disabledDates我需要覆盖的属性.此屏幕截图是动态添加disabledDatesvia ajax调用的结果,如上所述.在我的ajax调用之后,两个组件(Datepicker和HotelDatePicker)具有相同的内容disabledDates,包含相同的数据.但是我的日期并没有呈现为"禁用"(仅当我对其进行硬编码时) 在此输入图像描述

javascript datepicker vue.js vuejs2

1
推荐指数
1
解决办法
1226
查看次数

EasyAdminBundle:验证不适用于CKEditorType

在使用EasyAdminBundle创建的管理控制台中,我的表单验证仅适用于没有的字段CKEditorType。一些字段需要编辑,因此我使用FOSCKEditorBundle实现了所见即所得。

有关领域的摘录:

- { property: 'content', type: 'FOS\CKEditorBundle\Form\Type\CKEditorType'} 
Run Code Online (Sandbox Code Playgroud)

当我提交带有空白“内容”字段的表单时,InvalidArgumentException出现错误消息:Expected argument of type "string", "NULL" given.而不是诸如“ 请填写此字段”之类的验证错误

没有CKEditor的相关领域的代码片段:

- { property: 'content' } 
Run Code Online (Sandbox Code Playgroud)

=>验证非常有效。

我的实体字段:

    /**
     * @ORM\Column(type="text")
     * @Assert\NotBlank
     * @Assert\NotNull
     */
    private $content;
Run Code Online (Sandbox Code Playgroud)

Symfony探查器显示此字段确实具有required属性。

如何使用CKEditor字段类型启用验证?

ckeditor symfony symfony4 easyadmin

1
推荐指数
1
解决办法
208
查看次数

如何使用 Bootstrap 或 CSS 将容器 div 覆盖在另一个容器上

这是我想要实现的布局。


我使用 Bootstrap 4 设计了一个布局,其中容器 b 位于容器 A 旁边。但我希望容器 B 覆盖容器 A 的某些部分,如图所示。我怎样才能实现这种布局?任何帮助或参考将不胜感激。

  <!-- container A -->
        <div class="container-fluid">
         <div class="row text-center">
            <div class="col-12">
              <h4>HOW IT WORKS</h4>
            </div>
          </div>
        
          <div class="row text-center">
            <div class="offset-md-2 col-md-2 px-0">
                <div class="card">
                    <div class="card-header">
                      card 1 title
                    </div>
                    <div class="card-body">
                       card 1 body
              
                    </div>
                  </div>
            </div>
            <div class="offset-md-1 col-md-2">
              <div class="card">
                    <div class="card-header">
                      card 2 header
                    </div>
                    <div class="card-body">
                        card 2 body
                    </div>
                  </div>
            </div>
            <div class="offset-md-1 col-md-2">
                <div class="card">
                    <div class="card-header">
                      card 3 header …
Run Code Online (Sandbox Code Playgroud)

html javascript css bootstrap-4

1
推荐指数
1
解决办法
1万
查看次数